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

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

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
全部评论

相关推荐

05-09 14:45
门头沟学院 Java
点赞 评论 收藏
分享
迟缓的斜杠青年巴比Q了:简历被投过的公司卖出去了,我前两天遇到过更离谱的,打电话来问我有没有意向报班学Java学习,服了,还拿我学校一个学长在他们那报班学了之后干了华为OD当招牌
点赞 评论 收藏
分享
学历算污点吗?
小何和:快毕业了,BOSS上的od闻着味就来了
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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