百分比计算轮询系统mysql不同的行

时间:2014-12-26 19:11:31

标签: mysql

我有一张表民意调查

id  question  votes  
1   question1  3  
2   question2  4  
3   question3  3

我想独立计算投票行的百分比值。

这是我使用的代码:

SELECT *,(votes/sum(votes))*100 as perc from poll group by id; 

当我这样做时,我得到的每个perc 100%

然后我尝试了这个:

SELECT *,(votes/sum(votes))*100 as perc from poll;  

然后它只返回具有正确百分比值的第一行。

有人能告诉我我错过了什么吗?

3 个答案:

答案 0 :(得分:2)

SELECT id,
       sum(votes) * 100 / (select count(*) from poll) as perc 
from poll 
group by id

答案 1 :(得分:1)

我想你想要每个问题的每个投票的百分比。

SELECT *,(votes/sum(votes))*100 as perc from poll group by id; 没有工作,因为它通过ID获得总和。

因此,您首先必须在子查询中获得该总和然后除以它。问题是查询语法本身的操作顺序。

SELECT ID, Question, (votes/B.SV)*100 as perc 
FROM POLL
CROSS JOIN (SELECT SUM(VOTES) SV FROM POLL) B
GROUP BY ID, Question

我更喜欢这种方法来选择select子句中的select,因为它只需要对每次select中的select进行一次数学运算。

答案 2 :(得分:0)

总票数(SUM())代表100%。因此,使用croos-multiplication,您需要此查询:

SELECT votes*100/SUM(votes) perc
FROM poll