SQL20 查找员工编号emp_no为10001其自入职以来的薪水salary涨幅growth

本文最后更新于:2022年4月9日 中午


题目描述

查找员工编号emp_no为10001其自入职以来的薪水salary涨幅(总共涨了多少)growth(可能有多次涨薪,没有降薪)

1
2
3
4
5
6
CREATE TABLE `salaries` (
`emp_no` int(11) NOT NULL,
`salary` int(11) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`from_date`));

输入描述

输出描述

growth
28841

题解

1
2
3
4
5
6
select(
(select salary from salaries where emp_no=10001 order by to_date desc limit 1) -
(select salary from salaries where emp_no=10001 order by to_date asc limit 1)
) as growth;

select max(salary)-min(salary) as growth from salaries where emp_no=10001;

备注:

  1. 方法一:将该员工最后一次工资记录减去第一次工资记录得到入职以来salary的涨幅
  2. 方法二:只适用于员工最后一条工资记录为最大值时成立