LeetCode_database刷题记录(181. 超过经理收入的员工)

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

建表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')

解题sql:

select worker.Name Employee from Employee worker where exists (select id from Employee manager where manager.id = worker.ManagerId and manager.Salary < worker.Salary)

思路解析

这一题的思路很简单,首先关联这个表两次,一个是作为员工,一个是作为经理,然后员工的工资大于经理的工资,这个sql很容易就出来了.

你可能感兴趣的:(LeetCode_database刷题记录(181. 超过经理收入的员工))