我有一张三栏的桌子:
student_id, class, grade
每个学生可以上6到10节课,并且可以在每堂课上获得任意数量的分数。
例如,student_id =1的学生可以上6门课,物理2年级,数学6年级,英语4年级等等,而student_id =2的学生可以上10节物理课,2年级数学,7年级英语,3年级地理等等。
我只需要找到那些在他/她参加的每堂课的第五名中获得平均分(分数)的学生(嗯,学生身份证)。
发布于 2018-11-07 14:14:47
我认为您可以简单地将数据分组两次:
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)
https://stackoverflow.com/questions/53191093
复制相似问题