有一张学生考试成绩表。
学生在一段时间内接受多次测验。
尝试开发一个查询,只会在所有的测验中仅提取100%的学生。
表 - 学生 学生卡, QuizScore
当然,学生可以通过测验或多次测验获得100%的奖励,但只是在所有测验中获得100%得分的学生名单。
考虑嵌套查询但绘制空白:(
提前致谢
答案 0 :(得分:4)
Select studentid
From studentscores
Group by studentid
Having avg(quizscore) = 100
答案 1 :(得分:0)
有几种方法可以做到这一点,一种是将所有结果的计数与100的结果进行比较。您可以将case
与count
一起使用:
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去除多行。