SQL练习25:获取员工其当前的薪水比其manager当前薪水还高的相关信息

SQL练习25:获取员工其当前的薪水比其manager当前薪水还高的相关信息

题目链接:牛客网

题目描述
获取员工其当前的薪水比其manager当前薪水还高的相关信息,当前表示to_date='9999-01-01',结果第一列给出员工的emp_no,第二列给出其managermanager_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`));

解法
根据题目的要求,我们可以先获得两张表,员工薪水表,manager薪水表,再将这两张表连接起来,筛选在部门相同的情况下,员工的工资大于manager的数据。

SELECT de.emp_no, dm.emp_no manager_no, es.salary emp_salary, ms.salary manager_salary
FROM (dept_emp de JOIN salaries es ON de.emp_no = es.emp_no AND es.to_date = '9999-01-01')
, (dept_manager dm JOIN salaries ms ON dm.emp_no = ms.emp_no AND ms.to_date = '9999-01-01')
WHERE de.dept_no = dm.dept_no AND es.salary > ms.salary

猜你喜欢

转载自blog.csdn.net/qq_43965708/article/details/113605784