返回介绍

solution / 1200-1299 / 1270.All People Report to the Given Manager / README

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

1270. 向公司 CEO 汇报工作的所有人

English Version

题目描述

员工表:Employees

+---------------+---------+
| Column Name   | Type  |
+---------------+---------+
| employee_id   | int   |
| employee_name | varchar |
| manager_id  | int   |
+---------------+---------+
employee_id 是这个表具有唯一值的列。
这个表中每一行中,employee_id 表示职工的 ID,employee_name 表示职工的名字,manager_id 表示该职工汇报工作的直线经理。
这个公司 CEO 是 employee_id = 1 的人。

 

编写解决方案,找出所有直接或间接向公司 CEO 汇报工作的职工的 employee_id

由于公司规模较小,经理之间的间接关系 不超过 3 个经理

可以以 任何顺序 返回无重复项的结果。

返回结果示例如下。

 

示例 1:

输入:
Employees table:
+-------------+---------------+------------+
| employee_id | employee_name | manager_id |
+-------------+---------------+------------+
| 1       | Boss      | 1      |
| 3       | Alice     | 3      |
| 2       | Bob       | 1      |
| 4       | Daniel    | 2      |
| 7       | Luis      | 4      |
| 8       | Jhon      | 3      |
| 9       | Angela    | 8      |
| 77      | Robert    | 1      |
+-------------+---------------+------------+
输出:
+-------------+
| employee_id |
+-------------+
| 2       |
| 77      |
| 4       |
| 7       |
+-------------+
解释:
公司 CEO 的 employee_id 是 1.
employee_id 是 2 和 77 的职员直接汇报给公司 CEO。
employee_id 是 4 的职员间接汇报给公司 CEO 4 --> 2 --> 1 。
employee_id 是 7 的职员间接汇报给公司 CEO 7 --> 4 --> 2 --> 1 。
employee_id 是 3, 8 ,9 的职员不会直接或间接的汇报给公司 CEO。 

解法

方法一:两次连接

我们可以通过两次连接来找到所有直接或间接向公司 CEO 汇报工作的职工的 employee_id

具体地,我们首先通过一次连接,找到每个 manager_id 对应的上级经理的 manager_id,然后再通过一次连接,找到更上一级经理的 manager_id,最后,如果更上一级的 manager_id 为 $1$,且员工的 employee_id 不为 $1$,则说明该员工直接或间接向公司 CEO 汇报工作。

# Write your MySQL query statement below
SELECT e1.employee_id
FROM
  Employees AS e1
  JOIN Employees AS e2 ON e1.manager_id = e2.employee_id
  JOIN Employees AS e3 ON e2.manager_id = e3.employee_id
WHERE e1.employee_id != 1 AND e3.manager_id = 1;

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

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

发布评论

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