题解 | #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,通过逗号连接即可。按照从左往右的顺序满足排序条件。

全部评论

相关推荐

流浪的神仙:无恶意,算法一般好像都得9硕才能干算法太卷啦
点赞 评论 收藏
分享
06-11 17:39
门头沟学院 Java
小呆呆的大鼻涕:卧槽,用户彻底怒了
点赞 评论 收藏
分享
测试糕手手:社会第一课,随便吹牛逼,直接说四个月,别老实。老实人只会被欺负
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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