mysql exercise - employee who exceeds manager's salary

Employee The table contains all employees and their managers are also employees. Each employee has an Id, in addition to a column corresponding to the employee's manager's Id.

+----+-------+--------+-----------+
| Id | Name  | Salary | ManagerId |
+----+-------+--------+-----------+
| 1  | Joe   | 70000  | 3         |
| 2  | Henry | 80000  | 4         |
| 3  | Sam   | 60000  | NULL      |
| 4  | Max   | 90000  | NULL      |
+----+-------+--------+-----------+

Given a  Employee table, write an SQL query that gets the names of employees who earn more than their managers. In the table above, Joe is the only employee who earns more than his manager.

+----------+
| Employee |
+----------+
| Joe      |
+----------+

mysql script

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', null);
insert into Employee (Id, Name, Salary, ManagerId) values ('4', 'Max', '90000', null);

Use your brain first

Answer:

#自己写的
SELECT
	e.`Name` Employee
FROM
	employee01 e
LEFT JOIN employee01 ep ON e.ManagerId = ep.Id
WHERE
	e.ManagerId IS NOT NULL
AND e.Salary > ep.Salary 

#答案
SELECT
	a. NAME AS Employee
FROM
	Employee01 AS a
JOIN Employee01 AS b ON a.ManagerId = b.Id
AND a.Salary > b.Salary

SELECT 
    a.name AS Employee
FROM employee01 AS a,employee01 AS b
where a.ManagerId = b.Id
AND a.Salary > b.Salary

Topic source:

https://leetcode-cn.com/problems/employees-earning-more-than-their-managers/description/

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325829488&siteId=291194637