题目内容:
表:Employee
编写一个SQL查询来查找收入比经理高的员工。
以 任意顺序 返回结果表。
查询结果格式如下所示。
我的思路:
要查询收入比经理高的员工,如果只查询一次表的话没办法同时拿到员工和对应经理的工资,所以应该查询两次这张表,然后用员工的id和经理的id做inner join内连接,然后where过滤即可。
sql语句如下:
select
t1.name Employee
from
(
select
id,
name,
salary,
managerId
from Employee
)t1
inner join
(
select
id,
name,
salary,
managerId
from Employee
)t2
on t1.managerId=t2.id
and t1.salary>t2.salary
注意:这里有可能有多个层级,即c是b的经理,b是a的经理…,所以不能用managerId是否为null来判断是不是经理,有人既是经理又是员工。