(秋招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”。这里顺序错了就会提示:您的代码无法通过所有用例