题目描述:获取所有当前在职的非manager员工薪水情况,给出dept_no、emp_no以及salary。(题目要求自己修改了一下,感觉加上当前在职的更合理)。
一、join..on+not in
select de.dept_no, e.emp_no, s.salary
from employees e join dept_emp de on e.emp_no=de.emp_no
join salaries s on e.emp_no =s.emp_no
where e.emp_no not in
(
select emp_no
from dept_manager
where to_date="9999-01-01"
)
and de.to_date="9999-01-01"not in找出不是是当前经理的emp_no。join..on找出所有员工的信息。de.to_date="9999-01-01"筛出当前在职员工。
二、只用join..on解决
select de.dept_no, e.emp_no, s.salary
from employees e join dept_emp de on e.emp_no=de.emp_no
join salaries s on e.emp_no =s.emp_no
join dept_manager dm on de.dept_no=dm.dept_no
and de.emp_no <> dm.emp_no
and de.to_date=dm.to_date
where de.to_date="9999-01-01"思路与方法一致。join..on找出所有每个部门不是在职经理的员工信息。where筛出在职员工的信息。

京公网安备 11010502036488号