要查找在职员工自入职以来的薪水涨幅情况,并按要求输出员工编号和涨幅,可以按照以下步骤进行:
步骤解析
- 筛选当前在职员工:在 salaries 表中找出 to_date = '9999-01-01' 的记录,表示当前仍在职。
- 获取入职时的薪水:每个员工的入职日期(hire_date)对应 salaries 表中 from_date = hire_date 的薪水记录。
- 计算薪水涨幅:当前薪水减去入职时的薪水即为涨幅(growth)。
- 连接表并过滤:通过两次连接 salaries 表,分别获取当前薪水和入职薪水。
SELECT e.emp_no, (curr_salary.salary - hire_salary.salary) AS growth FROM employees e INNER JOIN salaries curr_salary ON e.emp_no = curr_salary.emp_no AND curr_salary.to_date = '9999-01-01' INNER JOIN salaries hire_salary ON e.emp_no = hire_salary.emp_no AND hire_salary.from_date = e.hire_date ORDER BY growth ASC;
- 连接两次 salaries 表:当前薪水:curr_salary 表筛选 to_date = '9999-01-01',确保只取在职员工的当前薪水。入职薪水:hire_salary 表通过 from_date = hire_date 匹配入职当天的初始薪水。
- 计算涨幅:直接相减得到 growth,确保结果为整数。
- 排序结果:使用 ORDER BY growth ASC 按涨幅升序排列。