SQL21 - 查找所有员工自入职以来的薪水涨幅情况
题目描述:
查找所有员工自入职以来的薪水涨幅情况,给出员工编号emp_no以及其对应的薪水涨幅growth,并按照growth进行升序
(注:可能有employees表和salaries表里存在记录的员工,有对应的员工编号和涨薪记录,但是已经离职了,离职的员工salaries表的最新的to_date!='9999-01-01',这样的数据不显示在查找结果里面)
1 CREATE TABLE `employees` ( 2 `emp_no` int(11) NOT NULL, 3 `birth_date` date NOT NULL, 4 `first_name` varchar(14) NOT NULL, 5 `last_name` varchar(16) NOT NULL, 6 `gender` char(1) NOT NULL, 7 `hire_date` date NOT NULL, -- '入职时间' 8 PRIMARY KEY (`emp_no`)); 9 10 CREATE TABLE `salaries` ( 11 `emp_no` int(11) NOT NULL, 12 `salary` int(11) NOT NULL, 13 `from_date` date NOT NULL, -- '一条薪水记录开始时间' 14 `to_date` date NOT NULL, -- '一条薪水记录结束时间' 15 PRIMARY KEY (`emp_no`,`from_date`));
难易程度:
较难
难易程度:
1 select a.emp_no,a.salary-b.salary as 'growth' 2 from 3 (select emp_no,salary from salaries where to_date = '9999-01-01' ) a left join 4 (select emp_no,min(to_date),salary from salaries group by emp_no) b 5 on a.emp_no = b.emp_no 6 order by growth;

浙公网安备 33010602011771号