查找每节课平均成绩>5的学生

toiithl6  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(272)

我有一个有3列的表:

student_id, class, grade

每个学生可以上6到10节课,每节课可以拿到任意数量的分数。
因此,例如,学生id=1的学生可以上6节课,他/她可以有2个物理成绩,6个数学成绩,4个英语成绩等等,学生id=2的学生可以上10节课,他/她可以有7个物理成绩,2个数学成绩,7个英语成绩,3个地理成绩等等。
我只需要找到在他/她参加的每一堂课中获得平均成绩(等级)在第5名的学生(嗯,学生证)。

gv8xihay

gv8xihay1#

我认为您可以简单地将数据分组两次:

SELECT student_id
FROM (
    SELECT student_id, class, AVG(grade) AS avg_grade
    FROM yourtable
    GROUP BY student_id, class
) AS x
GROUP BY student_id
HAVING COUNT(class) = COUNT(CASE WHEN avg_grade >= 5 THEN 1 END)

相关问题