要查找在职员工自入职以来的薪水涨幅情况,并按要求输出员工编号和涨幅,可以按照以下步骤进行:

步骤解析

  1. 筛选当前在职员工:在 salaries 表中找出 to_date = '9999-01-01' 的记录,表示当前仍在职。
  2. 获取入职时的薪水:每个员工的入职日期(hire_date)对应 salaries 表中 from_date = hire_date 的薪水记录。
  3. 计算薪水涨幅:当前薪水减去入职时的薪水即为涨幅(growth)。
  4. 连接表并过滤:通过两次连接 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;
  1. 连接两次 salaries 表:当前薪水:curr_salary 表筛选 to_date = '9999-01-01',确保只取在职员工的当前薪水。入职薪水:hire_salary 表通过 from_date = hire_date 匹配入职当天的初始薪水。
  2. 计算涨幅:直接相减得到 growth,确保结果为整数。
  3. 排序结果:使用 ORDER BY growth ASC 按涨幅升序排列。