1.分析
1.可以通过MAX配合<运算得到
2.可以通过自连接和<=号配合COUNT函数找出排名高的薪水
补充:第二种方法可以推广到求薪水排名第N高的情况

2.代码

方法1:用MAX函数,先查出最大salary,再利用<得到不含最大salary的子表,在子表上再求最大值

SELECT e.emp_no, s.salary, e.last_name, e.first_name
FROM employees AS e
INNER JOIN 
salaries AS s
ON e.emp_no=s.emp_no
WHERE to_date='9999-01-01'
AND salary=(SELECT max(salary)
            FROM salaries
            WHERE to_date='9999-01-01'
            AND salary<(SELECT MAX(salary)
            FROM salaries
            WHERE to_date='9999-01-01')
            );


方法2:通过自连接和<=号配合COUNT函数找出排名高的薪水
SELECT e.emp_no, s.salary, e.last_name, e.first_name
FROM employees AS e
INNER JOIN 
salaries AS s
ON e.emp_no=s.emp_no
WHERE to_date='9999-01-01'
AND salary=(SELECT s1.salary
            FROM salaries AS s1
            INNER JOIN 
            salaries AS s2
            ON s1.to_date='9999-01-01'
            AND s2.to_date='9999-01-01'
            WHERE s1.salary <= s2.salary
            GROUP BY s1.salary
            HAVING COUNT(DISTINCT s2.salary)=2
            );