The Employee
table holds all employees including their managers. Every employee has an ID, and there is also a column for the manager ID.
+----+-------+--------+-----------+| Id | Name | Salary | ManagerID |+----+-------+--------+-----------+| 1 | Joe | 70000 | 3 | | 2 | Henry | 80000 | 4 | | 3 | Sam | 60000 | NULL | | 4 | Max | 90000 | NULL |+----+-------+--------+-----------+
Given Employee
The table, write a SQL query that finds out employees who earn more than their managers. For the above table, Joe was the only employee of the WHO earns more than his manager.
+----------+| Employee |+----------+| Joe |+----------+
This problem gives us an employee table, the employee's salary information and the manager's information, the manager also belongs to the staff, whose manager ID is empty, let us find the salary is higher than its manager's staff, then is a very simple comparison problem, We can generate two instance objects to cross through ManagerID and IDs, and then limit the condition to one salary greater than the other:
Solution One:
SELECT from Employee E1 JOIN on = E2. IdWHERE> E2. Salary;
We can also simply write the conditions in the where without a join:
Solution Two:
SELECT from Employee E1, employee E2 WHERE = and > E2. Salary;
Resources:
Https://leetcode.com/discuss/88189/two-straightforward-way-using-where-and-join
Leetcode all in one topic summary (continuous update ...)
[Leetcode] Employees earning more Than their Managers employees earn more than managers