牛客网数据库SQL实战03—— 查找最晚入职员工的所有信息

牛客网数据库SQL实战03—— 查找最晚入职员工的所有信息

题目描述

查找各个部门当前(to_date=‘9999-01-01’)领导当前薪水详情以及其对应部门编号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 birth_date birth_date last_name last_name hire_date
10008 1958-02-19 Saniya Kalloufi M 1994-09-15
emp_no salary from_date to_date dept_no
10002 72527 2001-08-02 9999-01-01 d001
10004 74057 2001-11-27 9999-01-01 d004
10005 94692 2001-09-09 9999-01-01 d003
10006 43311 2001-08-02 9999-01-01 d002
10010 94409 2001-11-23 9999-01-01 d006

我的解答

select s.emp_no,s.salary,s.from_date,s.to_date,d.dept_no
from dept_manager d
join salaries s
on d.emp_no = s.emp_no
where d.to_date='9999-01-01'
and s.to_date='9999-01-01'

我的方法没通过检测,,个人觉得题目没给表数据,出的不清楚

后测试发现,把s,d表换个位置就可以通过了。。。

我觉得最好的答案

SELECT s.*, d.dept_no FROM salaries s ,  dept_manager d 
WHERE s.to_date='9999-01-01' 
AND d.to_date='9999-01-01' 
AND s.emp_no = d.emp_no;
发布了136 篇原创文章 · 获赞 58 · 访问量 36万+

猜你喜欢

转载自blog.csdn.net/sunbocong/article/details/105445872