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

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

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

同一个部门最高工资可能有多个员工,,要求只输出任意一个,所以下面的思路不行

select dept_no,t2.emp_no,salary as maxSalary

from (

select dept_no,max(salary) maxsal

from dept_emp join salaries on dept_emp.emp_no=salaries.emp_no

group by dept_no

) as t1 join (select emp_no,salary from salaries) as t2 on t1.maxsal=t2.salary

思路:

1.连接dept_emp和salaries,方便后续根据部门分组,来统计工资,或者使用其他操作

2.窗口函数,每个部门根据员工工资进行排名,工资相同,也不能并列排名,然后取出所有排名第一的员工,即工资最高

select dept_no,emp_no,salary as maxSalary
from (
    select dept_emp.emp_no,dept_emp.dept_no,salaries.salary,
    dense_rank()over(partition by dept_no order by salary desc) as posn
    from dept_emp join salaries on dept_emp.emp_no=salaries.emp_no
) as t1
where t1.posn=1
全部评论

相关推荐

点赞 评论 收藏
分享
秋招不是要开始了吗,我都打算润了,看大家还在找不敢润了
一条从:因为不是人人都像佬一样有实习像我们这种二本仔秋招没有实习也是白忙活
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务