题目描述
获取员工其当前的薪水比其manager当前薪水还高的相关信息,当前表示to_date='9999-01-01', 结果第一列给出员工的emp_no, 第二列给出其manager的manager_no, 第三列给出该员工当前的薪水emp_salary, 第四列给该员工对应的manager当前的薪水manager_salary CREATE TABLE `dept_emp` ( `emp_no` int(11) NOT NULL, `dept_no` char(4) NOT NULL, `from_date` date NOT NULL, `to_date` date NOT NULL, PRIMARY KEY (`emp_no`,`dept_no`)); CREATE TABLE `dept_manager` ( `dept_no` char(4) NOT NULL, `emp_no` int(11) NOT NULL, `from_date` date NOT NULL, `to_date` date NOT NULL, PRIMARY KEY (`emp_no`,`dept_no`)); 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`));
输入描述:
无
输出描述:
emp_no | manager_no | emp_salary | manager_salary |
---|---|---|---|
10001 | 10002 | 88958 | 72527 |
10009 | 10010 | 95409 | 94409 |
SQL:
select A.emp_no as emp_no,B.emp_no as manager_no,A.salary as emp_salary,B.salary as manager_salaryfrom( select dept_emp.emp_no,dept_emp.dept_no,salary from dept_emp,salaries where dept_emp.emp_no not in(select emp_no from dept_manager) and dept_emp.emp_no=salaries.emp_no and salaries.to_date='9999-01-01' AND dept_emp.to_date='9999-01-01')as A,( select dept_manager.dept_no,dept_manager.emp_no,salaries.salary from dept_manager,salaries where dept_manager.emp_no=salaries.emp_no and salaries.to_date='9999-01-01'AND dept_manager.to_date='9999-01-01')as Bwhere A.dept_no=B.dept_no and A.salary>B.salary
三个部分 1、员工表和薪水表连接获取员工的编号、部门编号、当前薪水、此处并且将员工编号去除经理编号
2、经理表和薪水表连接获取经理的编号、部门编号、当前薪水
3、将获得的两张表按照相同的部门进行连接 并且员工的薪水大于经理的薪水 即可。