题解 | #获取每个部门中当前员工薪水最高的相关信息#
获取每个部门中当前员工薪水最高的相关信息
http://www.nowcoder.com/practice/4a052e3e1df5435880d4353eb18a91c6
思路:倒推法
结果:每个部门中当前员工薪水最高的相关信息 = 员工信息 加 薪水及部门在 部门最高薪水表 内;
倒推1:部门最高薪水表 = 含部门的薪水表 按照 部门 分组求最大薪水;
倒推2:含部门的薪水表 = 员工信息表 和 薪水表 多条件查询(由于日期都是一天,就没有考虑 “当前”,若是多月薪水表可以加 to_date = 'now_date')
select -- 每个部门中当前员工薪水最高的相关信息
dept_emp.dept_no
,dept_emp.emp_no
,salaries.salary
from dept_emp,salaries
where dept_emp.emp_no = salaries.emp_no -- 这里还是多表查询,也可以用连接
and (dept_emp.dept_no, salaries.salary) in
(
select -- 部门最高薪水表
dept_no
,max(salary) maxSalary
from (
select -- 含部门的薪水表
de.dept_no dept_no
,de.emp_no emp_no
,sa.salary salary
from dept_emp de,salaries sa
where de.emp_no = sa.emp_no) sa_emp
group by sa_emp.dept_no)
order by dept_emp.dept_no