SQL25 - 获取员工其当前的薪水比其manager当前薪水还高的相关信息

题目描述:

获取员工其当前的薪水比其manager当前薪水还高的相关信息,当前表示to_date='9999-01-01',
结果第一列给出员工的emp_no,
第二列给出其manager的manager_no,
第三列给出该员工当前的薪水emp_salary,
第四列给该员工对应的manager当前的薪水manager_salary
 1 CREATE TABLE `dept_emp` (
 2 `emp_no` int(11) NOT NULL,
 3 `dept_no` char(4) NOT NULL,
 4 `from_date` date NOT NULL,
 5 `to_date` date NOT NULL,
 6 PRIMARY KEY (`emp_no`,`dept_no`));
 7 
 8 CREATE TABLE `dept_manager` (
 9 `dept_no` char(4) NOT NULL,
10 `emp_no` int(11) NOT NULL,
11 `from_date` date NOT NULL,
12 `to_date` date NOT NULL,
13 PRIMARY KEY (`emp_no`,`dept_no`));
14 
15 CREATE TABLE `salaries` (
16 `emp_no` int(11) NOT NULL,
17 `salary` int(11) NOT NULL,
18 `from_date` date NOT NULL,
19 `to_date` date NOT NULL,
20 PRIMARY KEY (`emp_no`,`from_date`));

 

难易程度:

较难

 

解答:

 1 select d.emp_no,d.manager_no,d.salary as emp_salary,e.salary as manager_salary
 2 from 
 3 (select a.emp_no,c.emp_no as manager_no,a.salary
 4 from 
 5 (select emp_no,salary from salaries where to_date='9999-01-01') a
 6 left join 
 7 (select emp_no,dept_no from dept_emp where to_date='9999-01-01') b 
 8 on a.emp_no = b.emp_no
 9 left join dept_manager c on b.dept_no = c.dept_no) d 
10 left join (select emp_no,salary from salaries where to_date='9999-01-01') e on d.manager_no = e.emp_no
11 where d.salary> e.salary;

 

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