Mysql SQL行比较查询
我是SQL新手,试图对下面的结果表编写一个查询,以便列出学生Mary得分高于Tom的科目Mysql SQL行比较查询,mysql,sql,qsqlquery,Mysql,Sql,Qsqlquery,我是SQL新手,试图对下面的结果表编写一个查询,以便列出学生Mary得分高于Tom的科目 Subject Student Teacher Score -------------------------------------------------- Maths Tom Anderson 67 Maths Mary Anders
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);
请注意,这将包括Mary有分数但Tom没有分数的主题。您可以通过自联接将其概括如下:
Subject
---------
Maths
Geography
查询:
select a.Student As higher, b.Student as lower, a.Subject
from score a
join score b ON a.Student <> b.Student
AND a.Subject = b.Subject
AND a.Score > b.Score
显然,您可以通过添加这个WHERE
子句来过滤结果
where a.student ='Mary' AND b.student = 'Tom
此查询将为您提供所需的结果:
SELECT subject
FROM scores
WHERE student = 'Mary'
AND ( subject
, score
) IN (
SELECT subject
, MAX( score )
FROM scores
GROUP BY subject
);