题解 | #查找在职员工自入职以来的薪水涨幅情况#
查找在职员工自入职以来的薪水涨幅情况
https://www.nowcoder.com/practice/fc7344ece7294b9e98401826b94c6ea5
select 入职工资.emp_no , 最终工资.salary - 入职工资.salary growth #表头# from (select emp_no, salary from (select emp_no, salary , rank()over(partition by emp_no order by from_date) rk1 from salaries ) ranking1 where ranking1.rk1 = 1 ) 入职工资 #按from_date正序编号可以获得入职工资# right join (select emp_no, salary from (select emp_no, salary , rank()over(partition by emp_no order by from_date desc) rk2 from salaries ) ranking2 where ranking2.rk2 = 1) 最终工资 #按from_date倒序编号可以获得最终工资# #这个结果包含了离职和在职人员,如果题目要求仅离职或者仅在职,都可以最后通过where筛选# on 入职工资.emp_no = 最终工资.emp_no #入职工资 right join 最终工资,其实left也可# where 入职工资.emp_no in ( select emp_no from salaries where to_date = '9999-01-01') #按题目要求仅保留在职人员# order by growth #按题目要求排序#
