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;

 

 
posted @ 2020-09-30 11:33  Python小白白  阅读(286)  评论(0)    收藏  举报