我有一个MYSQL数据库,可以跟踪学生在测试中的正确与错误。它有列Student,questionID和trakStatus(记录Right / Wrong)。我想要编译的是一个按问题ID列出的学生每个学生的百分比。
目前,当我运行我的SQL行时,它会吐出一个questionID列表,但所有这些都具有相同的百分比计算,即最后一个问题的百分比。输出将如下所示:
**QuestionID** **Percentage**
1001 .2459
1002 .2459
1003 .2459
etc.
我想要的是每个questionID的不同百分比计算。这是我目前使用的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
我无法弄清楚我哪里出错了。这似乎应该有效。任何建议都会非常感激。谢谢!
答案 0 :(得分:0)
您不需要子查询,只需要条件聚合:
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;