获取每个部门中当前员工薪水最高的相关信息
获取每个部门中当前员工薪水最高的相关信息
http://www.nowcoder.com/questionTerminal/4a052e3e1df5435880d4353eb18a91c6
简述:需求 :各个部门薪水最高的员工基础信息
解决:需要关联出这样一个表,包含员工信息,所在部门信息及部门最高薪水
需要三个表关联
表1:员工薪水表
表2:员工部门表
表1 join 表 2 on 工号=工号 -- 获取员工所在部门信息
表3:从上述关联表中 group by 通过max()函数 获取各个部门及对应的最高工资
表4:表1 left 表2 on 工号=工号 left 表3 on 部门号=部门号
表4 信息 : 员工号,部门号,员工薪资,所在部门最高薪资
select * from 表4 where 员工薪资 = 所在部门最高工资 order by 部门号
-- 注意 防止出现相同薪水 且其中某份薪水为某个部门最高薪水的情况 select emp.dept_no,emp.emp_no,d.salary from ( -- 关联出来员工和所在的部门 dept_emp emp left join salaries on emp.emp_no = salaries.emp_no -- 关联出各个各个员工所在部门的最大薪水 left join ( -- 获取分组及各组的最大薪水 select dept_no,max(salary) salary from ( select b.salary salary,a.dept_no,a.emp_no emp_no from ( dept_emp a left join salaries b on a.emp_no = b.emp_no ) ) c group by dept_no ) d on emp.dept_no = d.dept_no -- 条件:员工薪水等于部门最大薪水 ) where d.salary = salaries.salary order by emp.dept_no