我创建了一个包含以下内容的视图:
student_full_name subject_code result
Jennifer Higgins CS1234 81
Jennifer Higgins CS1235 90
Kal Penn CS1234 70
Kal Penn CS1235 60
Han Solo CS1234 45
Han Solo CS1235 70
我试图得到:
每个学生的平均成绩,比如 Jennifer Higgins 就读于 CS1234 和 CS1235。她的平均分数是 85.50。
然后将 Jennifer Higgins 的分数与所有注册的平均分数进行比较,因此将所有科目的 AVG(结果)相加。
然后查询将列出所有得分高于平均分的学生。
我知道我必须在这里使用子查询才能获得所有结果的 AVG。嗯,这是一种伪代码。我很困惑,因为我不确定如何使子查询与查询结果进行比较。我很确定我需要两个 group by 语句,一个用于按 student_full_name 分组,另一个用于获得所有平均结果。
SELECT student_full_name,
AVG(results) AS average_result
FROM viewEnrol
WHERE average_result > ( SELECT (AVG(results))
FROM viewEnrol
GROUP BY student_full_name
//编辑
输出应该看起来像。Kal Penn 和 Han Solo 没有被列出,因为他们没有达到平均水平。所有科目的平均分是 69.33。Han Solo 得到 57.5,Kal Penn 得到 65。
student_full_name subject_code result
Jennifer Higgins CS1234 85.5
有什么帮助吗?