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

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

https://www.nowcoder.com/practice/fc7344ece7294b9e98401826b94c6ea5

select
    b.emp_no,
    c.salary - b.salary as growth  #作差即为变化
from(
select
    e.emp_no,
    s1.salary
from salaries s1
join employees e on s1.emp_no = e.emp_no
where s1.from_date = e.hire_date)b #先找出入职时的工资是多少,有hire_date很容易
join 
(select
    emp_no,
    salary
from
(select 
    emp_no,
    salary,
    rank()over(order by to_date desc) ranks
from salaries)a
where ranks = 1)c   #找出目前的工资是多少,注意这里考虑了离职的情况,即找to_date最大的记录就行了
on b.emp_no = c.emp_no
order by c.salary - b.salary

这里感觉找出目前工资可以优化,lz是学了一周的小白就不深究了

全部评论

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务