Mysql 查找每个项目占总数的百分比
我有一个MYSQL数据库,可以跟踪学生在考试中的对与错。它有Student、questionID和trakStatus列(记录正确/错误)。我想汇编的是一份按问题ID列出的清单,其中列出了每一个问题的正确率 目前,当我运行SQL行时,它会弹出一个问号列表,但所有问号都使用相同的百分比计算,即最后一个问题的百分比。输出如下所示:Mysql 查找每个项目占总数的百分比,mysql,sql,Mysql,Sql,我有一个MYSQL数据库,可以跟踪学生在考试中的对与错。它有Student、questionID和trakStatus列(记录正确/错误)。我想汇编的是一份按问题ID列出的清单,其中列出了每一个问题的正确率 目前,当我运行SQL行时,它会弹出一个问号列表,但所有问号都使用相同的百分比计算,即最后一个问题的百分比。输出如下所示: **QuestionID** **Percentage** 1001 .2459 1002 .2459 1003
**QuestionID** **Percentage**
1001 .2459
1002 .2459
1003 .2459
etc.
我想要的是每个问题ID的计算百分比。以下是我当前使用的SQL:
SELECT questionID,
(SELECT COUNT( * )
FROM storedQuestions
WHERE trakStatus = 'Wrong') /
(SELECT COUNT( * )
FROM storedQuestions
WHERE (
trakStatus = 'Wrong'
OR trakStatus = 'Right'
) ) AS Percentage
FROM storedQuestions
GROUP BY questionID
我不知道我错在哪里。这似乎应该奏效。任何建议都将不胜感激。谢谢 您不需要子查询,只需要条件聚合:
SELECT questionID,
SUM(trakStatus = 'Wrong') / SUM(trakStatus IN ('Wrong', 'Right')) as Percentage
FROM storedQuestions
GROUP BY questionID;
如果trackStatus
仅采用这两个值,则可以将其简化为:
SELECT questionID,
AVG(trakStatus = 'Wrong') as Percentage
FROM storedQuestions
GROUP BY questionID;
您不需要子查询,只需要条件聚合:
SELECT questionID,
SUM(trakStatus = 'Wrong') / SUM(trakStatus IN ('Wrong', 'Right')) as Percentage
FROM storedQuestions
GROUP BY questionID;
如果trackStatus
仅采用这两个值,则可以将其简化为:
SELECT questionID,
AVG(trakStatus = 'Wrong') as Percentage
FROM storedQuestions
GROUP BY questionID;
哇,这很简单。非常感谢!哇,这很简单。非常感谢!