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

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

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

全部评论

相关推荐

01-23 14:54
同济大学 Java
热爱敲代码的程序媛:给你提几点【专业技能】这个模块里面可优化的地方:1.【具备JVM调优经验】可以去b站上搜一下JVM调优的视频,估计一两个小时凭你的学习能力就能掌握JVM调优的实践方面的技能。2.【MySql优化】MySql这一栏,你去b站或者找个博客看看MySql优化,学一下,如果你本身比较熟悉MySql语句的话,那基本半天时间凭你的学习能力MySql语句优化方面的技能你也能掌握个差不多。以上1,2两点主要是因为我看你专业技能大部分都说的是偏理论,没有写应用。再就是最后,你结合你的项目,想一想你的项目中哪些sql语句是可以用MySql优化的,到时候你面试的时候也好结合着说一下。
点赞 评论 收藏
分享
起名字真难233:人家只有找猴子的预算,来个齐天大圣他们驾驭不住呀😂😂
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务