+-------------+----------+
|Column Name |Type|+-------------+----------+
| employee_id | int || name | varchar || manager_id | int || salary | int |+-------------+----------+
InSQL, employee_id is the primarykeyfor this table.
This tablecontains information about the employees, their salary, and the ID of their manager. Some employees donot have a manager (manager_id isnull).
Find the IDs of the employees whose salary is strictly less than $30000 and whose manager left the company. When a manager leaves the company, their information is deleted from the Employees table, but the reports still have their manager_id set to the manager that left.
Input:
Employees table:+-------------+-----------+------------+--------+| employee_id | name | manager_id | salary |+-------------+-----------+------------+--------+|3| Mila |9|60301||12| Antonella |null|31000||13| Emery |null|67084||1| Kalel |11|21241||9| Mikaela |null|50937||11| Joziah |6|28485|+-------------+-----------+------------+--------+Output:
+-------------+| employee_id |+-------------+|11|+-------------+Explanation:
The employees with a salary less than $30000 are 1(Kalel) and 11(Joziah).Kalel's manager is employee 11, who is still in the company(Joziah).Joziah's manager is employee 6, who left the company because there is no row for employee 6 as it was deleted.
To find employees whose manager left, look for employees whose manager_id does not exist in the employee_id column. Combine this with the salary condition.
SELECT employee_id
FROM Employees e
WHERE salary <30000AND manager_id ISNOTNULLAND manager_id NOTIN (SELECT employee_id FROM Employees)
ORDERBY employee_id;
1
2
3
4
5
6
SELECT employee_id
FROM Employees e
WHERE salary <30000AND manager_id ISNOTNULLAND manager_id NOTIN (SELECT employee_id FROM Employees)
ORDERBY employee_id;