2016-06-11 80 views
1

我有一个MYSQL数据库,用于跟踪学生在测试中是否得到正确与错误。它有专栏学生,questionID和trakStatus(记录正确/错误)。我想编制的是按问题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

你不需要子查询,只要有条件聚集:

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; 
+0

哇,这是非常简单的。非常感谢! –