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

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

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

两种方法:

1、不借助窗口函数,直接用多表连接

select distinct
	# 为了过题目才加max,实际输出全部最高的部门最高薪员工才合理
    t1.dept_no, max(t3.emp_no), t2.maxSalary
from
    dept_emp t1
    join (
        select
            d.dept_no AS dept_no,
            max(salary) AS maxSalary
        from
            dept_emp d
            join salaries s on d.emp_no = s.emp_no
        group by
            d.dept_no
    ) t2 on t2.dept_no = t1.dept_no
    join salaries t3 on t2.maxSalary = t3.salary
# 为了过题目才加group by
group by  t1.dept_no, t2.maxSalary
order by t1.dept_no

2、窗口函数(每组内top)

select
    dept_no,
    emp_no,
    salary
from
    (
        select
            rank() over (
                partition by
                    dept_no
                order by
                    salary DESC
            ) AS rk,
            dept_no,
            emp_no,
            salary
        from
            (
                # 先拼出一张大表,包括部门、员工、工资
                select
                    t1.emp_no,
                    t1.dept_no,
                    t2.salary
                from
                    dept_emp t1
                    join salaries t2 on t1.emp_no = t2.emp_no
            ) tmp
    ) tmpp
where
    tmpp.rk = 1

全部评论

相关推荐

牛客928043833号:在他心里你已经是他的员工了
点赞 评论 收藏
分享
nus22016021404:兄弟,你这个简历撕了丢了吧,就是一坨,去找几个项目,理解项目流程,看几遍就是你的了,看看八股就去干了,多看看牛客里别人发出来的简历,对着写,你这写的啥啊,纯一坨
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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