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

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

http://www.nowcoder.com/questionTerminal/fc7344ece7294b9e98401826b94c6ea5

本题应该考虑降薪的问题:
题中没有讲员工不降薪,所以不能直接使用最大薪水-最小薪水求值,例如:我入职薪水100元,过程中降薪20元,现在工资80元,那么按照(最大薪水-最小薪水求值),薪水还涨了20元,但实际是降薪20元,所有有错误。
实际应该使用最后记录薪水-入职时薪水(80-100),涨幅为-20元

-- 本题应该考虑降薪的问题:题中没有讲员工不降薪,所以不能直接使用最大薪水-最小薪水求值
SELECT 
  s1.emp_no,
  s2.salary - s1.salary AS growth 
FROM
  (SELECT 
    e.emp_no,
    s.salary 
  FROM
    employees e 
    LEFT JOIN salaries s 
      ON e.emp_no = s.emp_no 
  WHERE e.hire_date = s.from_date) AS s1  -- 入职薪水
  INNER JOIN 
    (SELECT 
      e.emp_no,
      s.salary 
    FROM
      employees e 
      LEFT JOIN salaries s 
        ON e.emp_no = s.emp_no 
    WHERE s.to_date = '9999-01-01') AS s2  -- 现在薪水
    ON s1.emp_no = s2.emp_no  
ORDER BY growth 
全部评论
根据题目给的输出结果来看并没有降薪的人员,最低的也是0。为什么最大-最小没有通过呢? select s.emp_no , max(s.salary)- min(s.salary) as growth from employees e left join salaries s on e.emp_no = s.emp_no where e.emp_no in (select distinct a.emp_no from salaries a where a.to_date = '9999-01-01') group by e.emp_no order by growth asc
1
送花
回复 分享
发布于 2020-10-16 00:10
不够完美,这个只能算一次涨幅。多次涨幅怎么办
1
送花
回复 分享
发布于 2021-10-19 20:51
秋招专场
校招火热招聘中
官网直投
这是不是只考虑了一次涨幅,万一他多次转部门,薪资涨幅有几次呢
点赞
送花
回复 分享
发布于 2021-08-28 20:26
万一这个人离职了,那s.to_date = '9999-01-01'是不对的吧
点赞
送花
回复 分享
发布于 2021-09-03 21:39
为什么要把s1和s2再连一次?
点赞
送花
回复 分享
发布于 2021-12-28 10:42
涨幅有歧义,是以入职与现在的时间点为准还是最低和最高为准
点赞
送花
回复 分享
发布于 2022-12-02 21:57 山西
万一有两个员工同一天入职呢
点赞
送花
回复 分享
发布于 2023-01-24 14:24 江苏

相关推荐

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