我有一个有3列的表:
student_id, class, grade
每个学生可以上6到10节课,每节课可以拿到任意数量的分数。因此,例如,学生id=1的学生可以上6节课,他/她可以有2个物理成绩,6个数学成绩,4个英语成绩等等,学生id=2的学生可以上10节课,他/她可以有7个物理成绩,2个数学成绩,7个英语成绩,3个地理成绩等等。我只需要找到在他/她参加的每一堂课中获得平均成绩(等级)在第5名的学生(嗯,学生证)。
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)
1条答案
按热度按时间gv8xihay1#
我认为您可以简单地将数据分组两次: