想请教一个简单的sql

一个表叫 scoretable
表里有 name,class,coursename,score
分别代表学生姓名、学生班级、课程名字和这门课的分数

求这个表里 每个班级每个课程第一名的名字 
输出是 name,class,coursename

这样应该怎么写呢?上次面试感觉写的有点问题
#sql##MySQL#
全部评论
两个知识点: - group by 两个列 - group by 和 order by 同时使用 group by 两个列不用多说。group by 和 order by 同时使用的话,由于这里最后 select 的列中刚好不需要 score,不然 group by 配上一个 max 就很香: select name, class, coursename, max(score)  from scoretable group by class, coursename; 不要 score 的话可以利用子查询先做 order by 再 group by,因为没有聚合函数 group by 天然返回第一行: select s.name, s.class, s.coursename  from (select * from scoretable order by score desc) as s  group by s.class, s.coursename;
1 回复 分享
发布于 2020-04-16 13:48

相关推荐

1 8 评论
分享
牛客网
牛客企业服务