题解 | 查找在职员工自入职以来的薪水涨幅情况
查找在职员工自入职以来的薪水涨幅情况
https://www.nowcoder.com/practice/fc7344ece7294b9e98401826b94c6ea5
阅读题目后可得知本题的重点为如何求出old_salary以及new_salary,这样就可以利用二者相减求出growth
而salary的数值只在salaries表中呈现,所以我们要利用此表与employees表的关系:
- 我们发现old_salary是员工第一次入职时的工资,换言之就是hire_date与form_date相等的时刻
- 因为还有一个条件是在职,所以new_salary一定是from_date=9999-01-01时的salary
结合这两个条件,将employees表与salaries表做两次连接便可得出答案
SELECT e.emp_no,
n.salary-o.salary AS growth
FROM employees e
JOIN salaries o
ON e.emp_no = o.emp_no
AND e.hire_date = o.from_date
JOIN salaries n
ON e.emp_no = n.emp_no
WHERE n.to_date = '9999-01-01'
ORDER BY growth
