0
点赞
收藏
分享

微信扫一扫

4、刷sql题第四天

343d85639154 2022-03-17 阅读 37

题目内容:

表: Employee
在这里插入图片描述
表: Department
在这里插入图片描述
编写SQL查询以查找每个部门中薪资最高的员工
任意顺序 返回结果表。
查询结果格式如下例所示。
示例 1:
在这里插入图片描述

我的思路:

看到题目内容,求每个部门中薪资最高的员工,很明显是分组TopN的问题,开窗+rank即可。代码如下:

select
    t3.name Department,
    t2.name Employee,
    t2.salary Salary
from
(
    select
        name,
        salary,
        departmentId
    from
    (
        select
            name,
            salary,
            departmentId,
            rank() over(partition by departmentId order by salary desc) rk
        from Employee
    )t1
    where t1.rk=1
)t2
join
(
    select
        id,
        name
    from Department
)t3
on t2.departmentId=t3.id

我这里是先根据部门id求出每个部门最高工资的一条数据(如果有并列的话是多条数据),然后再跟部门表外连接获得部门名称。
也可以先全外连接然后再分组topN,只不过先全外连接可能join的数据量会大一些。

举报

相关推荐

第四天 作业

Rhcsa第四天

第四天笔记

HCIP 第四天

第四天记录

0 条评论