题解 | #查找在职员工自入职以来的薪水涨幅情况#

查找在职员工自入职以来的薪水涨幅情况

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   #按题目要求排序#


全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务