Dedução forte 181. Empregados que excedem a renda do gerente
https://leetcode-cn.com/problems/employees-earning-more-than-their-managers/
A tabela Funcionário contém todos os funcionários e seus gerentes também são funcionários. Cada funcionário tem um ID e também há uma lista de IDs correspondentes ao gerente do funcionário.
+ ---- + ------- + -------- + ----------- +
| Id | Nome | Salário | ManagerId |
+ ---- + ------- + -------- + ----------- +
| 1 | Joe | 70000 | 3 |
| 2 | Henry | 80000 | 4 |
| 60000 | NULL |
| 4 | Max | 90000 | NULL |
+ ---- + ------- + -------- + ----------- +
Dada a tabela Funcionário, escreva uma consulta SQL que possa obter os nomes dos funcionários cuja renda excede seus gerentes. Na tabela acima, Joe é o único funcionário cuja renda excede seu gerente.
+ ---------- +
| Empregado |
+ ---------- +
| Joe
+ ---------- +
Método um:
WHERE
Declaração de uso
Use a instrução SELECT de duas tabelas pode resultar em um produto cartesiano . Nesse caso, a saída produzirá 4 * 4 = 16 registros. No entanto, estamos interessados apenas em pessoas cujos salários são maiores que seus gerentes. Portanto, devemos adicionar duas condições de julgamento com a declaração WHERE.
# Write your MySQL query statement below
select e1.name as Employee #选的是员工表的名字
from employee e1,#两表连接
employee e2
where e1.ManagerId=e2.Id and e1.salary>e2.salary;
#条件查询,e1是员工表,e2是经理表;首先是对应员工的经理;第二是对应员工的经理
Método dois:
JOIN
Declaração de uso
De fato, JOIN
é uma maneira mais comum e mais eficaz de conectar tabelas, que usamos ON
para especificar as condições.
SELECT
a.NAME AS Employee
FROM Employee AS a JOIN Employee AS b
ON a.ManagerId = b.Id
AND a.Salary > b.Salary
;
作者:LeetCode
链接:https://leetcode-cn.com/problems/employees-earning-more-than-their-managers/solution/chao-guo-jing-li-shou-ru-de-yuan-gong-by-leetcode/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。