使用窗口函数first_value(),last_value();这个答案是正确的,但是因为牛客网的输出没有排序与此答案输出结果不同而出错,实际上这也是一种不错的思路。
(select distinct emp_no,
first_value(salary) over w as maxsalary,
last_value(salary) over w as minsalary
from salaries s
where emp_no in (select distinct emp_no from salaries where to_date='9999-01-01')
WINDOW w as (
partition by emp_no order by to_date desc ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
))a;