【SQL216】题解 | 获取当前薪水第二多的员工的emp_no以及其对应的薪水salary

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

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

select emp_no, salary from (select emp_no, salary, dense_rank() over (order by salary desc) as rk from salaries) s where rk = 2 order by emp_no;

SQL216

这道题获取薪水第二多的员工的emp_no以及其对应的薪水salary,若有多个员工的薪水为第二多的薪水,则将对应的员工的emp_no和salary全部输出,并按emp_no升序排序

两个关键点:

1.使用可重复排序的窗口函数dense_rank() over (order by xxx asc/desc) as rk from xxx进行排序,获取薪水第二多的员工的emp_no以及其对应的薪水salary

 (select emp_no, salary, dense_rank() over (order by salary desc) as rk from salaries) s where rk = 2
 # 后面在最外层的时候使用了子查询或者说外层查询

2.按emp_no升序排序

order by emp_no

完整代码如下:

select emp_no, salary from (select emp_no, salary, dense_rank() over (order by salary desc) as rk from salaries) s where rk = 2 order by emp_no;

完结

SQL学习专栏 文章被收录于专栏

发个sql学习和实践的小记录

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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