写一条SQL查询出每门科目的最高分,按照科目进行分组

面试碰到了这个问题,当时没有写对,现在记录下来(供参考)

题目:有一个学生的成绩表scores(如下表),有id,name,score,subject四个字段,写一条SQL查询出每门科目的最高分,按照科目进行分组,要显示的有姓名、成绩、科目。

写一条SQL查询出每门科目的最高分,按照科目进行分组_第1张图片


SQL:select s1.name, s1.score, s1.subject from scores s1 where s1.score = (select max(s2.score) from scores s2 group by s2.subject having s1.subject=s2.subject);


Result:

写一条SQL查询出每门科目的最高分,按照科目进行分组_第2张图片

这只是其中一种做法,欢迎举出效率更高,更简便的方法。

你可能感兴趣的:(数据库,面试题,SQL)