首页 > 试题广场 >

查找当前薪水详情以及部门编号dept_no

[编程题]查找当前薪水详情以及部门编号dept_no
  • 热度指数:956782 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
有一个全部员工的薪水表salaries简况如下:
emp_no
salary
from_date
to_date
10001
88958 2002-06-22
9999-01-01
10002
72527 2001-08-02
9999-01-01
10003
43311 2001-12-01 9999-01-01

有一个各个部门的领导表dept_manager简况如下:
dept_no
emp_no
to_date
d001 10001 9999-01-01
d002 10003 9999-01-01

请你查找各个部门当前领导的薪水详情以及其对应部门编号dept_no,输出结果以salaries.emp_no升序排序,并且请注意输出结果里面dept_no列是最后一列,以上例子输出如下:
emp_no salary from_date to_date dept_no
10001 88958 2002-06-22 9999-01-01 d001
10003 43311 2001-12-01 9999-01-01
d002
示例1

输入

drop table if exists  `salaries` ; 
drop table if exists  `dept_manager` ; 
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`));
CREATE TABLE `dept_manager` (
`dept_no` char(4) NOT NULL,
`emp_no` int(11) NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`dept_no`));
INSERT INTO dept_manager VALUES('d001',10002,'9999-01-01');
INSERT INTO dept_manager VALUES('d002',10006,'9999-01-01');
INSERT INTO dept_manager VALUES('d003',10005,'9999-01-01');
INSERT INTO dept_manager VALUES('d004',10004,'9999-01-01');
INSERT INTO salaries VALUES(10001,88958,'2002-06-22','9999-01-01');
INSERT INTO salaries VALUES(10002,72527,'2001-08-02','9999-01-01');
INSERT INTO salaries VALUES(10003,43311,'2001-12-01','9999-01-01');
INSERT INTO salaries VALUES(10004,74057,'2001-11-27','9999-01-01');
INSERT INTO salaries VALUES(10005,94692,'2001-09-09','9999-01-01');
INSERT INTO salaries VALUES(10006,43311,'2001-08-02','9999-01-01');
INSERT INTO salaries VALUES(10007,88070,'2002-02-07','9999-01-01');

输出

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
头像 此用户名涉嫌违规
发表于 2021-03-01 18:25:04
没看懂大家题解里为什么要对to_date进行判断。但是我这个是直接过了。 select sa.emp_no, sa.salary , sa.from_date,sa.to_date, de.dept_no from salaries sa right join dept_manager de on 展开全文
头像 N刻后告诉你
发表于 2020-05-19 20:27:49
题目:查找在当前时刻(to_date=‘9999-01-01’),各个部门的经理的薪水详情以及其对应部门编号dept_no题目隐含要求:最后输出的emp_no是按照从小到大的顺序排列的 方法1:纯where连接两表select salaries.emp_no, salaries.salary, sa 展开全文
头像 ~Marienbader
发表于 2020-03-03 09:58:29
感觉这题目描述的不准确,看了讨论区才理解对。。连接表达式写法 select s.*,d.dept_no from salaries as s inner join dept_manager as d on s.emp_no=d.emp_no where s.to_date='9999-01-01' 展开全文
头像 GLaDOS_Wheatley
发表于 2020-10-03 23:23:59
select salaries.*,dept_manager.dept_no -- 选择要呈现的项from salaries left join dept_manager -- 使用左外连接查询(要求输出结果里面dept_no列是最后一列)on salaries.emp_no=dept_ma 展开全文
头像 horsemuzi
发表于 2020-10-09 20:38:02
左连接查询,以薪水信息表为主表,勿忘记on条件和体重规定的最后一列dept_no SELECT s.*, d.dept_no FROM salaries s LEFT JOIN dept_manager d ON s.emp_no = d.emp_no WHERE 展开全文
头像 hello-coder
发表于 2021-01-30 12:58:01
无论是做 SQL 题还是在实际工作中使用 SQL ,开始编码前,一定要先熟悉数据表! 解题思路:使用 join 为了方便查找信息,直接将 salaries 和 dept_manager 这两张表进行连接。根据题目要求,将部门表中当前领导以及薪水表中所有当前的薪水记录筛选出来,将经过筛选后的两张表进行 展开全文
头像 白伟仝
发表于 2020-06-26 19:11:46
select salaries.emp_no, salary, salaries.from_date, salaries.to_date, dept_no from salaries, dept_manager where dept_manager.to_date='9999-01-01' and 展开全文
头像 数据分析阿宇君
发表于 2020-08-15 13:20:09
在这里要注意下面三种都可以 select s.*, d.dept_no from salaries s inner join dept_manager d on s.emp_no=d.emp_no where s.to_date='9999-01-01' and d.to_date='9999-01 展开全文
头像 刷题好难哦
发表于 2021-08-18 18:02:06
SELECT s.emp_no,s.salary,s.from_date,s.to_date,d.dept_nofrom salaries as s ,dept_manager as dwhere s.emp_no = d.emp_noORDER by s.emp_no; 不太明白为啥要使用内联结, 展开全文
头像 你永远得不到的祖奶奶
发表于 2020-06-25 19:33:29
https://www.nowcoder.com/practice/c63c5b54d86e4c6d880e4834bfd70c3b?tpId=82&tags=&title=&diffculty=0&judgeStatus=0&rp=1&ru=/ta/ 展开全文