题解 | #查找在职员工自入职以来的薪水涨幅情况#
查找在职员工自入职以来的薪水涨幅情况
https://www.nowcoder.com/practice/fc7344ece7294b9e98401826b94c6ea5
select a.emp_no, b.salary-a.salary growth from (select em.emp_no, sa.salary from employees em left join salaries sa on em.emp_no = sa.emp_no and em.hire_date = sa. from_date ) a inner join (select em.emp_no, sa.salary from employees em left join salaries sa on em.emp_no = sa.emp_no where to_date='9999-01-01')b on a.emp_no = b.emp_no order by growth
练习思路:
题目求解的是涨幅,而不是每一次涨幅,所以要先找出最初的工资和最后一次工资:
最初的工资:进入公司的那一天的工资
最后的工资:依旧在职的工资
如果两个工资相减,就可以造出两个表(最初a、最后b),利用两个表再做表连接,最后达到一张大表格中
再分别提取a表的salary和b表的salary进行运算
最重要的是:有由不同时间点构成各个表格的思维,如果要算每次增幅可以创造多表进行