题目描述:获取员工其当前的薪水比其manager当前薪水还高的相关信息,第一列给出员工的emp_no,第二列给出其manager的manager_no,第三列给出该员工当前的薪水emp_salary,第四列给该员工对应的manager当前的薪水manager_salary。
分块写法(逻辑更清晰):
with manager as #当前经理当前薪水情况
(
select dm.dept_no,
dm.emp_no as manager_no,
s.salary as manager_salary
from dept_manager dm join salaries s
on dm.emp_no=s.emp_no
where s.to_date="9999-01-01"
and dm.to_date="9999-01-01"
group by dm.dept_no
),
salary as #当前普工当前薪水与对应经理薪水情况
(
select de.emp_no,
m.manager_no,
s.salary as emp_salary,
m.manager_salary
from dept_emp de join manager m on de.dept_no=m.dept_no
join salaries s on de.emp_no=s.emp_no
where s.to_date="9999-01-01"
and de.to_date="9999-01-01"
)
#找出员工薪水大于经理的记录
select *
from salary
where emp_salary > manager_salary同样的思路放在一起的写法(代码相对较量少):
select de.emp_no as emp_no,
dm.emp_no as manager_no,
s1.salary as emp_salary,
s2.salary as manager_salary
from dept_emp de,
dept_manager dm,
salaries s1,
salaries s2
where de.dept_no=dm.dept_no
and de.emp_no=s1.emp_no
and dm.emp_no=s2.emp_no
and de.to_date="9999-01-01"
and dm.to_date="9999-01-01"
and s1.to_date="9999-01-01"
and s2.to_date="9999-01-01"
and s1.salary>s2.salary
京公网安备 11010502036488号