两种思路

思路1: 利用子查询得出第二多的薪水是数值,通过SELECT DISTINCT 和降序排序,可以得到salary的一个list,然后通过LIMIT 1, 1,即从第1位以后开始取,取一行数,这个数值即为第二多的薪水的值。然后通过WHERE等于第二多薪水的值对员工进行筛选
SELECT emp_no, salary
FROM salaries
WHERE salary = 
(
SELECT DISTINCT salary AS second_salary
      FROM salaries
      WHERE to_date = '9999-01-01'
      ORDER BY salary DESC
      LIMIT 1,1
)
ORDER BY emp_no ASC;
思路2: 利用窗口查询DENSE_RANK() OVER()
dense_rank():并列连续型排序。比如,数值为99,99,90,89,那么通过这个函数得到的排名为1,1,2,3
首先,通过窗口查询对salary进行排序
SELECT emp_no, salary
FROM 
   (
   SELECT *, DENSE_RANK() OVER(ORDER BY salary DESC) AS salary_rank 
   FROM salaries
   WHERE to_date = '9999-01-01'
) AS table_1
WHERE salary_rank = 2;