1. 题目
-
题目描述
获取薪水第二多的员工的emp_no以及其对应的薪水salary,
若有多个员工的薪水为第二多的薪水,则将对应的员工的emp_no和salary全部输出,并按emp_no升序排序。 -
表格
-
所需结果
2. 题解
直接使用窗口函数即可。
SELECT t.emp_no, t.salary
FROM (SELECT *,
RANK() OVER(ORDER BY salary DESC) rk
FROM salaries
) t
WHERE t.rk = 2
ORDER BY t.emp_no
另解:使用 LIMIT OFFSET
SELECT emp_no, salary
FROM salaries
WHERE salary = (SELECT DISTINCT salary FROM salaries ORDER BY salary DESC LIMIT 1 OFFSET 1)