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

#   1.获取每个部门【按部门聚合】中薪水最高的【用函数max()】员工相关信息,
#   2.给出dept_no, emp_no以及其对应的salary,
#   3.按照部门编号dept_no升序排列

#   思路一:使用where的子查询做筛选,子查询中嵌套表连接
/*
select d.dept_no, d.emp_no, salary
from dept_emp d join salaries s on d.emp_no = s.emp_no
where salary in (select max(salary) from dept_emp d join salaries s on d.emp_no = s.emp_no group by d.dept_no)
order by d.dept_no;
*/

#   思路二:使用from的子查询+rank窗口函数,最后rk=1做筛选
select rk.dept_no, rk.emp_no, salary
from (
    select d.dept_no, d.emp_no, salary, rank()over(partition by d.dept_no order by s.salary desc) as posn
    from dept_emp d join salaries s on d.emp_no = s.emp_no) as rk
where rk.posn = 1
order by rk.dept_no

全部评论

相关推荐

03-10 14:19
已编辑
重庆邮电大学 前端工程师
球Offer上岸:测试也难求一面 逆天
点赞 评论 收藏
分享
Dream_coding:你是不是只投大厂了
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务