SQL查询仅返回在所有测试中具有特定分数的学生

时间:2014-09-18 00:24:08

标签: sql

有一张学生考试成绩表。

学生在一段时间内接受多次测验。

尝试开发一个查询,只会在所有的测验中仅提取100%的学生。

表 - 学生 学生卡, QuizScore

当然,学生可以通过测验或多次测验获得100%的奖励,但只是在所有测验中获得100%得分的学生名单。

考虑嵌套查询但绘制空白:(

提前致谢

3 个答案:

答案 0 :(得分:4)

Select studentid
From studentscores
Group by studentid
Having avg(quizscore) = 100

答案 1 :(得分:0)

有几种方法可以做到这一点,一种是将所有结果的计数与100的结果进行比较。您可以将casecount一起使用:

select studentid
from students
group by studentid
having count(case when quizscore >= 100 then 1 end) = count(*)

如果quizes可能高于100,我已在=语句中将>=更改为case以解释这些问题。否则,请使用@ Rajesh的解决方案,因为我认为它最容易检查所有100个。

答案 2 :(得分:0)

您可以进行内部选择以查找至少有一个不是100分的学生,然后选择该组中所有不属于的学生ID。

SELECT Distinct StudentID FROM Students WHERE StudentID NOT IN
(SELECT StudentID FROM Students WHERE QuizScore != 100)

您还想使用Distinct去除多行。