3查找当前薪水详情以及部门编号dept_no
Posted guoyu1
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了3查找当前薪水详情以及部门编号dept_no相关的知识,希望对你有一定的参考价值。
1、
题目描述
查找各个部门当前(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`));
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 | 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 salaries s join dept_manager d on d.emp_no=s.emp_no
where d.to_date=‘9999-01-01‘ and s.to_date=‘9999-01-01‘;
这里的坑主要在于两个表的逻辑关系,题目要求是薪水情况以及部门编号,再结合输出情况dept_no 被放到了最后一列,可见是主表是“salaries”。这里顺序错了就会提示:您的代码无法通过所有用例。。。
我知道了salaries的from_date是当前薪水的开始时间,dept_manager的from_date是作为部门经理的开始时间。当上部门经理之后可能还会有好几次加薪。所以两个表的from_date不一样
以上是关于3查找当前薪水详情以及部门编号dept_no的主要内容,如果未能解决你的问题,请参考以下文章