题解 | #获取每个部门中当前员工薪水最高的相关信息#
获取每个部门中当前员工薪水最高的相关信息
http://www.nowcoder.com/practice/4a052e3e1df5435880d4353eb18a91c6
select T.dept_no,salaries.emp_no,T.maxSalary from (dept_emp left join salaries on dept_emp.emp_no=salaries.emp_no) left join (select d.dept_no,max(s.salary) as maxSalary from dept_emp as d left join salaries as s on d.emp_no=s.emp_no group by d.dept_no) as T on dept_emp.dept_no=T.dept_no where salaries.salary=T.maxSalary order by T.dept_no
dept_emp left join salaries on dept_emp.emp_no=salaries.emp_no
部门表一定包含所有员工,所以以员工编号相等为条件左连接以后每个员工的部门和薪水一定能连到一起----------------------------表一
。
select d.dept_no,max(s.salary) as maxSalary
from dept_emp as d left join salaries as s
on d.emp_no=s.emp_no
group by d.dept_no
根据表一计算出每个部门的最大工资---表二 形如
dept_no maxSalary
表一以部门相等为条件左连接表二,就得到表三
emp_no,dept_no, salary,maxSalary(属性没写全,只写了需要用到的)
然后对salary和maxSalary判等,输出符合条件的员工编号