Mysql计算所选行的百分比

时间:2016-12-17 12:49:33

标签: mysql sum cross-join

如果我的问题无关紧要,我很抱歉。因为我不是mysql的专家。

我的网站上有调查问卷。如果有人对我的调查进行投票,我想向选民展示调查结果。

这是DB结构;

surveys (包括调查名称说明和survey_id

Surveys

survey_choices (包括调查Chocies并与调查表survey_id相关)

Survey Choices

我正在尝试仅计算可见的调查选项%百分比。

如果我只有1个调查,它会计算出正确的结果。但如果我有超过1个调查,mysql计算所有表的整个survey_vote_count值。

这是我的MySQL查询;

SELECT 
survey_vote_id, survey_vote_name, survey_vote_count, survey_id, 
survey_vote_count * 100 / t.s AS survey_percentage
FROM survey_votes
CROSS JOIN (SELECT SUM(survey_vote_count) AS s FROM survey_votes) t
WHERE visibility = :visibility
AND survey_id = :surveyId
ORDER BY `survey_votes`.`order_id` ASC

我如何计算例如survey_id = 1 and visibility = 1%百分比=%100?

任何帮助都会大大增加。

1 个答案:

答案 0 :(得分:1)

您应该为交叉联接添加相同的条件。目前,在您的选择中,您对所有survey_vote_count求和,而不是相同的where条件(visibility和survey_id。