题解 | 考试分数(三)

考试分数(三)

https://www.nowcoder.com/practice/b83f8b0e7e934d95a56c24f047260d91

select id,name,score
from(select g.id,l.name,g.score,
dense_rank()over(partition by l.name order by g.score desc)  a
from grade g
join language l on l.id=g.language_id) r
where r.a<=2
order by name,score desc,id

运行逻辑

from/join-where-group by-having-select-order by

dense_rank()over(partition by l.name order by g.score desc) 窗口函数 对不同姓名的分数进行降序

where r.a<=2筛选小于等于2 就是前两名

主查询的数据源是子查询 所以查询时候不能使用子查询中的别名 直接用子查询中的列名。

全部评论

相关推荐

老板加个卤鸡蛋:HR看了以为来卧底来了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务