- 先找到每个部门对应的最大金额,两个表join之后直接对部门group by求最大金额即可,记为tb2,注意不可以把员工名打出来,因为默认是第一个,而不是max金额对应的那个,所以只能得到[部门,max金额];
- 两表连接记为tb1,即包含[员工,部门,薪水];
- 把tb2按照部门左连到tb1上,再找到薪水=max薪水的即可;
- 最后按部门排序。
remark:如果某部门有多个员工都是最大薪水,那么都会挑出来,但测试的样例似乎每个部门都只有一个最大薪水员工,需要只挑一个按部门去重即可
代码:
select tb1.dept_no, tb1.emp_no, tb1.salary from
(select dept_emp.dept_no , dept_emp.emp_no , salaries.salary
from dept_emp left join salaries
on dept_emp.emp_no = salaries.emp_no) as tb1
left join
(select dept_emp.dept_no , max(salaries.salary) maxsalary
from dept_emp left join salaries
on dept_emp.emp_no = salaries.emp_no
group by dept_emp.dept_no) as tb2
on tb1.dept_no = tb2.dept_no
where tb1.salary = tb2.maxsalary
order by tb1.dept_no



京公网安备 11010502036488号