请你获取薪水第二多的员工的emp_no以及其对应的薪水salary,若有多个员工的薪水为第二多的薪水,则将对应的员工的emp_no和salary全部输出,并按emp_no升序排序。
问题拆解:
- 先将员工的薪水按照倒序排序,取排名第二的薪水,因为dense_rank的功能是将重复的数字都排序成一样的排名(例如100,99,99,98排名为1,2,2,3),所以如果有多个员工并列的情况也不会选错排名。同时还需要给排好顺序的列新增一个名称“排名”
- dense_rank()over(order by salary desc) 排名
- 选择排名第二名的薪水,
- where 排名=2
- 按照emp_no排序,后面加asc也可,不加默认升序
- order by emp_no
- 因为最后输出的内容不需要排名,所以在有排名的表格里选择最后需要输出的内容即可。
- select emp_no, salary from 新生成的表
- 汇总,(新生成带排名的表格貌似要重命名才能提取信息,菜鸟新手还在琢磨中)
- select emp_no, salary from
- (select emp_no, salary, dense_rank()over(order by salary desc) 排名 from salaries
- ) re
- where 排名 = 2
- order by emp_no