题解 | #获取每个部门中当前员工薪水最高的相关信息#

获取每个部门中当前员工薪水最高的相关信息

http://www.nowcoder.com/practice/4a052e3e1df5435880d4353eb18a91c6

  1. 先找到每个部门对应的最大金额,两个表join之后直接对部门group by求最大金额即可,记为tb2,注意不可以把员工名打出来,因为默认是第一个,而不是max金额对应的那个,所以只能得到[部门,max金额];
  2. 两表连接记为tb1,即包含[员工,部门,薪水];
  3. 把tb2按照部门左连到tb1上,再找到薪水=max薪水的即可;
  4. 最后按部门排序。

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

全部评论

相关推荐

点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务