leetcode-181. 超过经理收入的员工

  • 题目

SQL架构:

Create table If Not Exists Employee (Id int, Name varchar(255), Salary int, ManagerId int)
Truncate table Employee
insert into Employee (Id, Name, Salary, ManagerId) values ('1', 'Joe', '70000', '3')
insert into Employee (Id, Name, Salary, ManagerId) values ('2', 'Henry', '80000', '4')
insert into Employee (Id, Name, Salary, ManagerId) values ('3', 'Sam', '60000', 'None')
insert into Employee (Id, Name, Salary, ManagerId) values ('4', 'Max', '90000', 'None')

Employee 表包含所有员工,他们的经理也属于员工。每个员工都有一个 Id,此外还有一列对应员工的经理的 Id。

±—±------±-------±----------+
| Id | Name | Salary | ManagerId |
±—±------±-------±----------+
| 1 | Joe | 70000 | 3 |
| 2 | Henry | 80000 | 4 |
| 3 | Sam | 60000 | NULL |
| 4 | Max | 90000 | NULL |
±—±------±-------±----------+
给定 Employee 表,编写一个 SQL 查询,该查询可以获取收入超过他们经理的员工的姓名。在上面的表格中,Joe 是唯一一个收入超过他的经理的员工。

±---------+
| Employee |
±---------+
| Joe |
±---------+

来源:力扣(LeetCode)
链接:181. 超过经理收入的员工
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

  • 分析

首先题目的查询涉及Name、Salaray、Id和ManagerId,涉及字段较多,所以想到用连接,注意是同一张表要使用别名。连接的参考量即为本题的判断条件:Salary。具体分析见代码。

  • 代码
# Write your MySQL query statement below
select Name as Employee from Employee as e where
Salary >(select Salary from Employee where Id=e.ManagerId);

在这里插入图片描述

2019.12.20

发布了52 篇原创文章 · 获赞 59 · 访问量 6828

猜你喜欢

转载自blog.csdn.net/ataraxy_/article/details/103637568