【SQL211】题解 | 获取每个部门中薪水最高的员工相关信息

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

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

select dept_no, emp_no, salary from(select e.dept_no, e.emp_no, salary, dense_rank() over(partition by dept_no order by salary desc) as rk from dept_emp e join salaries s on e.emp_no = s.emp_no) a where rk = 1 order by dept_no asc;

这道题是获取每个部门中薪水最高的员工相关信息,给出dept_no, emp_no以及其对应的salary,按照部门编号dept_no升序排列。

三个关键点:

1.按照部门编号对每个部门进行分组

partition by dept_no
# PARTITION BY ...:分区(按什么字段"分组计算"),这里是按照部门编号进行分组,作用是分成各个部门

2.用可重复排序窗口函数dense_rank(over order by 排序字段) as rk找出薪水最高的员工,可包含多个相同薪水的员工

dense_rank() over(partition by dept_no order by salary desc) as rk ... where rk = 1

3.按照部门编号dept_no升序排列

order by dept_no asc

完整代码如下:

select dept_no, emp_no, salary from(select e.dept_no, e.emp_no, salary, dense_rank() over(partition by dept_no order by salary desc) as rk from dept_emp e join salaries s on e.emp_no = s.emp_no) a where rk = 1 order by dept_no asc;

完结

SQL学习专栏 文章被收录于专栏

发个sql学习和实践的小记录

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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