秋招SQL实战 : 3.查找当前薪水详情以及部门编号dept_no
题目描述:
查找各个部门当前(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));
输入描述:
无
输出描述:
| mp_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.*,d.dept_no from salaries as 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-01';
这里主要在于两个表的逻辑关系,题目要求是薪水情况以及部门编号,再结合输出情况dept_no 被放到了最后一列,可见是主表是“salaries”。这里顺序错了就会提示:您的代码无法通过所有用例
版权声明:本文为zhaozhifeng521原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。