力扣——数据库刷题 No.5

今日刷题:

  • 部门工资前三的所有员工

部门前三的所有员工

在这里插入图片描述
解题思路:

  • 首先对所有同部门下的所有员工工资进行排名,获取到所有员工工资在自己部门的工资排名表
  • 然后内连接的方式联合查询部门表获取部门名称(此处必须为内连接,因为员工表和部门表都有可能内容为空),并查询部门工资排名表中所有工资排名是前三的记录。

SQL代码:

select 
    d.Name as Department,t.Name as Employee,t.salary as Salary
from (
    select 
        *,(
            select 
                count(distinct e2.salary)
            from 
                employee as e2 
            where 
                e1.departmentid = e2.departmentid and e1.salary < e2.salary
            ) 
            as 
                ran 
    from 
        employee as e1
) 
as 
    t 
join 
    department as d
on 
    t.departmentid = d.id and t.ran < 3

版权声明:本文为qq_35149975原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。