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

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

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
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务