题干
±------------±--------+
| Column Name | Type |
±------------±--------+
| id | int |
| name | varchar |
| salary | int |
| managerId | int |
±------------±--------+
id 是该表的主键(具有唯一值的列)。
该表的每一行都表示雇员的ID、姓名、工资和经理的ID。编写解决方案,找出收入比经理高的员工。以任意顺序返回结果表。结果格式如下所示。
示例
解答
这道题的核心是:将经理的薪资放到同一行比较。因此最简单的办法是创建临时表t1,存储和employee表相同的信息:ID、name、mana_salary(薪资这列名称用前缀区分一下),以employee表作为主表,去关联(左连接)每一个员工对应经理的薪资信息,判断salary>mana_salary,即为薪资高于领导的员工
with t1 as(
select id,managerid,name,salary as mana_salary from employee
)
select emp.name as employee from employee as emp
left join t1 on emp.managerid=t1.id
where salary>mana_salary