我有一个包含3列的表格:
student_id, class, grade
每个学生可以参加6到10个班级,并且每个班级可以获得任意数量的成绩。
因此,例如,student_id = 1的学生可以参加6个班级,他/她可以在物理上获得2年级,在数学上获得6年级,在英语上获得4个年级,依此类推,而Student_id = 2上10堂课,他/她可以在物理上获得7年级,数学上达到2年级,英语上达到7年级,地理上达到3年级等等。
我只需要找到参加了他/她参加的每堂课平均5(平均)成绩的学生(好,student_id)。
答案 0 :(得分:0)
我认为您可以将数据分组两次:
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)