题解 | #dense_rank() 重复排名不跳过#

对所有员工的薪水按照salary降序进行1-N的排名

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

select emp_no,
    salary,
    dense_rank() over(order by salary desc) t_rank
from salaries
order by t_rank, emp_no

dense_rank() 可以对重复元素的排名次序不跳过,即类似:1, 1, 1, 2, 3, 3, ... 的效果。符合本题要求。

over() 窗口函数限制需要进行排名的列以及升降序指定

另外,对于排名相同的 emp_no 需要升序排列,因此在整体满足 t_rank 排序的情况下,需要 order by t_rank 指定一个次要条件 emp_no,通过逗号连接即可。按照从左往右的顺序满足排序条件。

全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 11:31
点赞 评论 收藏
分享
零OFFER战士:另一个版本查看图片
点赞 评论 收藏
分享
06-12 16:23
已编辑
小米_软件开发(准入职员工)
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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