您的位置:首页 > 其它

获取所有非manager员工当前的薪水情况,给出dept_no、emp_no以及salary ,当前表示to_date='9999-01-01'

2018-11-27 09:48 645 查看
版权声明:matthew_Leung https://blog.csdn.net/mathew_leung/article/details/84560664

时间限制:1秒 空间限制:32768K 热度指数:25131

算法知识视频讲解

题目描述

获取所有非manager员工当前的薪水情况,给出dept_no、emp_no以及salary ,当前表示to_date='9999-01-01'
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 `employees` (
`emp_no` int(11) NOT NULL,
`birth_date` date NOT NULL,
`first_name` varchar(14) NOT NULL,
`last_name` varchar(16) NOT NULL,
`gender` char(1) NOT NULL,
`hire_date` date NOT NULL,
PRIMARY KEY (`emp_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`));

输入描述:

输出描述:

 
dept_no emp_no salary
d001 10001 88958
d004 10003 43311
d005 10007 88070
d006 10009 95409

示例1

输入

复制

输出

复制

[code]--获取所有非manager员工当前的薪水情况,给出dept_no、emp_no以及salary ,当前表示to_date='9999-01-01'
SELECT
de.dept_no,
de.emp_no,
sa.salary
FROM
dept_emp de,
salaries sa
WHERE
de.emp_no = sa.emp_no
AND de.to_date = '9999-01-01'
AND sa.to_date = '9999-01-01'
AND de.emp_no NOT IN ( SELECT emp_no FROM dept_manager );
--第二种方法
--利用左连接,将dept_emp 和dept_manager 两张表整合,然后当dm中emp_no就不是manager
SELECT
de.dept_no,
de.emp_no,
( SELECT salary FROM salaries WHERE emp_no = de.emp_no AND to_date = '9999-01-01' ) AS salary
FROM
dept_emp de
LEFT JOIN dept_manager dm ON de.emp_no = dm.emp_no
WHERE
de.to_date = '9999-01-01'
AND dm.emp_no IS NULL;

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐