返回介绍

solution / 1900-1999 / 1978.Employees Whose Manager Left the Company / README_EN

发布于 2024-06-17 01:03:12 字数 3438 浏览 0 评论 0 收藏 0

1978. Employees Whose Manager Left the Company

中文文档

Description

Table: Employees

+-------------+----------+
| Column Name | Type   |
+-------------+----------+
| employee_id | int    |
| name    | varchar  |
| manager_id  | int    |
| salary    | int    |
+-------------+----------+
In SQL, employee_id is the primary key for this table.
This table contains information about the employees, their salary, and the ID of their manager. Some employees do not have a manager (manager_id is null). 

 

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.

Return the result table ordered by employee_id.

The result format is in the following example.

 

Example 1:

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.

Solutions

Solution 1: Left Join

We can use a left join to connect the employee table with itself, and then filter out the employees whose salary is less than $30000$ and have a superior manager who has left the company.

# Write your MySQL query statement below
SELECT e1.employee_id
FROM
  Employees AS e1
  LEFT JOIN Employees AS e2 ON e1.manager_id = e2.employee_id
WHERE e1.salary < 30000 AND e1.manager_id IS NOT NULL AND e2.employee_id IS NULL
ORDER BY 1;

Solution 2: Subquery

We can also use a subquery to first find all the managers who have left the company, and then find the employees whose salary is less than $30000$ and whose superior manager is not in the list of managers who have left the company.

# Write your MySQL query statement below
SELECT employee_id
FROM Employees
WHERE salary < 30000 AND manager_id NOT IN (SELECT employee_id FROM Employees)
ORDER BY 1;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文