1731. 每位经理的下属员工数量

简介: 1731. 每位经理的下属员工数量

说在前面

🎈不知道大家对于算法的学习是一个怎样的心态呢?为了面试还是因为兴趣?不管是出于什么原因,算法学习需要持续保持。

题目描述

Table: Employees

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

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

编写SQL查询需要听取汇报的所有经理的ID、名称、直接向该经理汇报的员工人数,以及这些员工的平均年龄,其中该平均年龄需要四舍五入到最接近的整数。

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

查询结果的格式如下:

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

解题思路

该查询语句主要包含以下几个部分:

  • SELECT:用于指定要查询的列,包括员工编号 employee_id、姓名 name、下属数量 reports_count 和平均年龄 average_age。
  • FROM:用于指定要查询的表,此处为名为 “Employees” 的表。
  • INNER JOIN:用于将 “Employees” 表与自身进行内连接操作,将员工的编号与其下属的上司编号进行匹配。
  • ON:用于指定连接条件,即员工的编号与其下属的上司编号相等。
  • GROUP BY:用于按照员工编号对查询结果进行分组。
  • ORDER BY:用于按照员工编号对查询结果进行排序,默认为升序排序。

AC代码

select a.employee_id as 'employee_id', a.name as 'name', count(b.employee_id) as 'reports_count', round(avg(b.age), 0) as 'average_age'
from Employees a inner join Employees b
on a.employee_id = b.reports_to
group by a.employee_id
order by a.employee_id

公众号

关注公众号『前端也能这么有趣』,获取更多有趣内容。

说在后面

🎉 这里是 JYeontu,现在是一名前端工程师,有空会刷刷算法题,平时喜欢打羽毛球 🏸 ,平时也喜欢写些东西,既为自己记录 📋,也希望可以对大家有那么一丢丢的帮助,写的不好望多多谅解 🙇,写错的地方望指出,定会认真改进 😊,偶尔也会在自己的公众号『前端也能这么有趣』发一些比较有趣的文章,有兴趣的也可以关注下。在此谢谢大家的支持,我们下文再见 🙌。

目录
相关文章
|
JavaScript 数据可视化 定位技术
手把手教你用Pyecharts绘制地图~
大家好,我是志斌~ 今天来给大家分享一下如何用Pyecharts绘制地图。
3132 0
|
存储 SQL 缓存
StarRocks 存算分离在京东物流的落地实践
本文分享了京东物流在StarRocks存算分离架构上的实践与成果。通过将UData平台从存算一体升级为存算分离,显著提升了查询性能和资源利用率,同时大幅降低了存储成本(90%)和计算资源成本(30%)。文章详细介绍了存算分离的背景、部署方案、性能表现及优化措施,包括联邦查询、实时写入、Compaction调优等关键技术点。未来,京东物流将持续推动存算分离的应用拓展,并探索更多降本增效策略,如Stream Load任务合并与主动缓存管理。
|
Kubernetes 监控 Linux
不借助 Docker Desktop 在Mac上开发容器应用
![](https://ata2-img.oss-cn-zhangjiakou.aliyuncs.com/neweditor/e2096947-f310-4ac5-a413-ec2b28b0e040.png) Docker Desktop是最为流行的开发者工具,Docker公司在 8/31 宣布对Docker Desktop的用户协议进行了变更,对个人开发者继续免费,但是对商业开发者采取了收费策
2108 114
不借助 Docker Desktop 在Mac上开发容器应用
|
fastjson Java Maven
Java - 打印 Map & List 等复杂类型
Java - 打印 Map & List 等复杂类型
983 0
|
机器学习/深度学习 存储 人工智能
人工智能大语言模型微调技术:SFT 监督微调、LoRA 微调方法、P-tuning v2 微调方法、Freeze 监督微调方法
人工智能大语言模型微调技术:SFT 监督微调、LoRA 微调方法、P-tuning v2 微调方法、Freeze 监督微调方法
人工智能大语言模型微调技术:SFT 监督微调、LoRA 微调方法、P-tuning v2 微调方法、Freeze 监督微调方法
|
存储 算法 大数据
倚天性能优化--基于倚天优化后的zstd在大数据场景应用:降低存储成本+提升重IO场景性能
倚天性能优化--基于倚天优化后的zstd在大数据场景应用:降低存储成本+提升重IO场景性能
|
安全 Java
Java的长整型Long/long后面的数字什么情况下必须加L?
Java的长整型Long/long后面的数字什么情况下必须加L?
1566 0
|
分布式计算 算法 Hadoop
【Spark】(五)Spark Transformation(转换算子) 和 Action(执行算子)1
【Spark】(五)Spark Transformation(转换算子) 和 Action(执行算子)1
776 0
【Spark】(五)Spark Transformation(转换算子) 和 Action(执行算子)1
|
机器学习/深度学习 分布式计算 网络协议
Alluxio深度学习实战-1:体验在HDFS上运行PyTorch框架
在HDFS上运行PyTorch程序本来需要用户修改PyTorch的适配器代码进行完成的工作,通过Alluxio,我们简化了适配工作,能够快速开展模型的开发和训练。而通过Kubernetes平台,这件事情变得非常简单,欢迎尝试。
5423 0
Alluxio深度学习实战-1:体验在HDFS上运行PyTorch框架
|
监控 Cloud Native Java
依然顺滑!Dragonwell 11如何改造全新垃圾回收器ZGC? | 龙蜥技术
Dragonwell 11 的 ZGC 有什么具体的适用场景?如何改造全新垃圾回收器ZGC?
依然顺滑!Dragonwell 11如何改造全新垃圾回收器ZGC? | 龙蜥技术

热门文章

最新文章

下一篇
开通oss服务