181 超过经理收入的员工
SQL架构
表:Employee
±------------±--------+
| Column Name | Type |
±------------±--------+
| id | int |
| name | varchar |
| salary | int |
| managerId | int |
±------------±--------+
Id是该表的主键。
该表的每一行都表示雇员的ID、姓名、工资和经理的ID。
编写一个SQL查询来查找收入比经理高的员工。
以 任意顺序 返回结果表。
查询结果格式如下所示。
示例 1:
输入:
Employee 表:
±—±------±-------±----------+
| id | name | salary | managerId |
±—±------±-------±----------+
| 1 | Joe | 70000 | 3 |
| 2 | Henry | 80000 | 4 |
| 3 | Sam | 60000 | Null |
| 4 | Max | 90000 | Null |
±—±------±-------±----------+
输出:
±---------+
| Employee |
±---------+
| Joe |
±---------+
解释: Joe 是唯一挣得比经理多的雇员。
解决方案:
提供思路
对迭代模糊的同学这么看,一个员工的id是id,他经理的id对应的是managerid,找的就是本行的Salary 大于,elementid为id的那一行的Salary
1)使用 WHERE 语句
2)使用 JOIN 语句
主要是表要复用一次
--1
select
a.name as Employee
from
Employee as a,
Employee as b
where
a.ManagerId = b.Id
and a.Salary > b.Salary
--2
SELECT
a.NAME AS Employee
FROM Employee AS a JOIN Employee AS b
ON a.ManagerId = b.Id
AND a.Salary > b.Salary
以上是碰到的第一百八十一题,后续持续更新。感觉对你有帮助的小伙伴可以帮忙点个赞噢!