SQL25 - 获取员工其当前的薪水比其manager当前薪水还高的相关信息
题目描述:
获取员工其当前的薪水比其manager当前薪水还高的相关信息,当前表示to_date='9999-01-01',
结果第一列给出员工的emp_no,
第二列给出其manager的manager_no,
第三列给出该员工当前的薪水emp_salary,
第四列给该员工对应的manager当前的薪水manager_salary
结果第一列给出员工的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;

浙公网安备 33010602011771号