题解 | #考试分数(三)#

考试分数(三)

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

组内排名问题,top n 问题,通常的解法都是窗口函数
1.先 grade 用窗口函数,不同 language_id 分组,根据 score 进行组内排名;
2.将上述组内排好序的表和 language 表进行 inner join,目的是获取 name 字段;
3.在1.2 连接好的表中,select 出相应字段,条件是 ranking<=2,以及题目给定的排序条件

select a.id
      ,b.name
      ,a.score
from (select *
            ,dense_rank() over (partition by language_id order by score desc) as ranking
      from grade) a
inner join language b
on a.language_id=b.id
where a.ranking<=2
order by b.name,a.score desc,a.id
全部评论

相关推荐

但听说转正率很低,我现在有在实习了,好纠结要不要去
熬夜脱发码农:转正率低归低,但是实习的经历你可以拿着,又不是说秋招不准备了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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