查找每个项目的总数百分比

时间:2016-06-11 19:30:44

标签: mysql sql

我有一个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

我无法弄清楚我哪里出错了。这似乎应该有效。任何建议都会非常感激。谢谢!

1 个答案:

答案 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;