Mysql计算选定行的百分比

标签 mysql sum cross-join

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

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

这是数据库结构;

调查 表格(包括调查名称说明和survey_id)

Surveys

survey_choices 表格(包括调查选项并与调查表的 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和可见性= 1 %percentage = %100?

任何帮助都会非常有用。

最佳答案

您应该将相同的条件添加到交叉连接中。目前,在您的选择中,您对所有 Survey_vote_count 进行了汇总,但没有相同的条件(可见性和 Survey_id)。

关于Mysql计算选定行的百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41198739/

相关文章:

mysql - 对字段类型 varchar 中的时间求和

r - 使用 dplyr 的 mutate() 函数在 sum() 函数中使用列

mysql - 需要解决 mariadb 中复杂查询矩阵输出的问题

mysql - 是否可以用2个Mysql数据库实现JOIN查询?

php - Symfony SQLSTATE[HY000] [2002] 1and1 服务器拒绝连接

带有 varchar 字段的 where 语句的 MySQL 查询

mysql - 如何连接这两个表?

sql - 需要查询帮助

MySQL SUM 返回错误值