#方法一:失败了,可能是由于没有考虑到降薪的情况 #select #emp_no, #maxs-mins growth #from #( # select emp_no, #max(salary) over(partition by emp_no) maxs, #min(salary) over(partition by emp_no) mins, #to_date #from salaries #) a #where to_date='9999-01-01' #order by growth #方法二:成功了,用的表链接 select c.emp_no, d.salary-c.salary growth from ( select emp_no,salary,to_date from ( select *, row_number() over(partition by emp_no order by from_date ) px1, row_number() over(partition by emp_no order by from_date desc) px2 from salaries )a where px1=1 )c inner join ( select emp_no,salary,to_date from ( select *, row_number() over(partition by emp_no order by from_date ) px1, row_number() over(partition by emp_no order by from_date desc) px2 from salaries )b where px2=1 and to_date='9999-01-01' )d on c.emp_no=d.emp_no order by growth