我是SQL新手,并尝试针对以下结果表编写查询,该查询将使我能够列出学生Mary得分高于Tom的学科。
Subject Student Teacher Score
--------------------------------------------------
Maths Tom Anderson 67
Maths Mary Anderson 68
English Tom Lewis 55
English Mary Lewis 44
French Tom Joubert 87
French Mary Joubert 76
Geography Tom Arnold 76
Geography Mary Arnold 82
结果应为下表:
Subject
---------
Maths
Geography
我相信我应该使用join子句,但无法使其正常工作。
谢谢
最佳答案
假设没有重复的分数,您实际上可以使用聚合来完成。
select subject
from results
group by subject
having max(case when student = 'Mary' then score end) >
max(case when student = 'Tom' then score else 0 end);
请注意,这将包括玛丽得分较高但汤姆没有得分的主题。