您的位置:首页 > 新闻 > 热点要闻 > [高频sql50题]第1731题,每位经理的下属员工数量

[高频sql50题]第1731题,每位经理的下属员工数量

2024/12/27 3:05:53 来源:https://blog.csdn.net/weixin_45201305/article/details/141283543  浏览:    关键词:[高频sql50题]第1731题,每位经理的下属员工数量

题目:

表:Employees

+-------------+----------+
| Column Name | Type     |
+-------------+----------+
| employee_id | int      |
| name        | varchar  |
| reports_to  | int      |
| age         | int      |
+-------------+----------+
employee_id 是这个表中具有不同值的列。
该表包含员工以及需要听取他们汇报的上级经理的 ID 的信息。 有些员工不需要向任何人汇报(reports_to 为空)。

对于此问题,我们将至少有一个其他员工需要向他汇报的员工,视为一个经理。

编写一个解决方案来返回需要听取汇报的所有经理的 ID、名称、直接向该经理汇报的员工人数,以及这些员工的平均年龄,其中该平均年龄需要四舍五入到最接近的整数。

返回的结果集需要按照 employee_id 进行排序。

结果的格式如下:

示例 1:

输入:
Employees 表:
+-------------+---------+------------+-----+
| employee_id | name    | reports_to | age |
+-------------+---------+------------+-----+
| 9           | Hercy   | null       | 43  |
| 6           | Alice   | 9          | 41  |
| 4           | Bob     | 9          | 36  |
| 2           | Winston | null       | 37  |
+-------------+---------+------------+-----+
输出:
+-------------+-------+---------------+-------------+
| employee_id | name  | reports_count | average_age |
+-------------+-------+---------------+-------------+
| 9           | Hercy | 2             | 39          |
+-------------+-------+---------------+-------------+
解释:
Hercy 有两个需要向他汇报的员工, 他们是 Alice and Bob. 他们的平均年龄是 (41+36)/2 = 38.5, 四舍五入的结果是 39.

 要解决这个问题,可以采用以下步骤:

  1. 找出所有需要向其他员工汇报的员工的employee_id
  2. 统计每个经理的汇报员工数量,以及这些员工的年龄总和。
  3. 计算每个经理的汇报员工的平均年龄,并四舍五入到最接近的整数。
  4. 按照employee_id排序结果集。
select e2.employee_id,e2.name,count(e1.reports_to) as reports_count,round(avg(e1.age)) as average_age
fromEmployees as e1
left joinEmployees as e2
one1.reports_to = e2.employee_id
wheree1.reports_to is not null
group bye2.employee_id
order bye2.employee_id;

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com