题解 | #排序函数的使用#

获取当前薪水第二多的员工的emp_no以及其对应的薪水salary

https://www.nowcoder.com/practice/8d2c290cc4e24403b98ca82ce45d04db

select emp_no,
    salary
from (select *, 
    dense_rank() over(order by salary desc) ranks
    from salaries) T
where ranks = 2
order by emp_no
  • dense_rank(): 排序相同时会重复,数字不会跳过,即会出现 1, 1, 2... 的情况
  • rank(): 排序相同时会重复,但是数字会跳过,即会出现 1, 1, 3... 的情况
  • row_number(): 排序相同时不会重复,按顺序进行
    上述方法均使用 over() 限制排序的列以及排序是升序还是倒序(desc)

由于本题需要查找第二大的薪资,并且有可能重复,因此使用 dense_rank() 函数并倒序查找,指定序号为 2 的元素出列即可。

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-03 18:13
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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