SQL练习9:获取所有部门当前manager的当前薪水情况
题目链接:牛客网
题目描述
获取所有部门当前(dept_manager.to_date='9999-01-01')manager
的当前(salaries.to_date='9999-01-01')
薪水情况,给出dept_no
, emp_no
以及salary
,输出结果按照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`));
解法
查询的结果中要包含dept_no
,emp_no
以及salary
。连接两个表时,根据限定条件筛选符合题目要求的数据,最后按照dept_no
列升序排列。
SELECT dept_no, d.emp_no, salary
FROM dept_manager d JOIN salaries s
ON d.emp_no = s.emp_no AND d.to_date = '9999-01-01' AND s.to_date = '9999-01-01'
ORDER BY dept_no;