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

问题拆解:

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