题解 | #查找在职员工自入职以来的薪水涨幅情况#
查找在职员工自入职以来的薪水涨幅情况
https://www.nowcoder.com/practice/fc7344ece7294b9e98401826b94c6ea5
select salaries.emp_no, salaries.salary - min_salary as growth from salaries join (select emp_no, max(from_date) as max_time, min(salary) as min_salary from salaries where emp_no in (select emp_no from salaries where to_date = "9999-01-01") group by emp_no) t on salaries.emp_no = t.emp_no where salaries.from_date = t.max_time order by growth asc
首先先筛选出在职员工的编号、在职员工最近一次发工资的时间(max(from_date)),和职工最低工资(一般是刚入职,min(salary))(t)
然后根据将t与salaries进行连接,并且筛选出最近一次发工资的记录(salaries.from_date = t.max_time),此时可以查询出每个员工的员工的编号、当前工资、最低工资(min_salary,子查询中的)等数据,select选择出相应的字段进行相减即可,最后再使用order by对涨幅进行升序排序即可