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

目录
相关文章
|
7月前
|
算法 前端开发
1789. 员工的直属部门
1789. 员工的直属部门
45 0
|
7月前
|
SQL
超过经理收入的员工
超过经理收入的员工
35 0
|
7月前
|
SQL
leetcode-SQL-1731. 每位经理的下属员工数量
leetcode-SQL-1731. 每位经理的下属员工数量
49 0
|
机器人
用八爪鱼RPA实现员工薪资管理,轻松拆分发放工资单!
RPA(机器人流程自动化)技术可以极大地压缩、优化现有的员工薪资管理流程。通过使用rpa机器人,可以自动化个税计算和申报,自动化工资单处理和发放等重复性、繁琐的任务。这样可以节省大量人力和时间,提高工作效率,减少错误和延误,提升员工满意度。同时,rpa还可以保证数据的准确性,提高工资管理的合规性,增强企业的信誉。
|
数据库
LeetCode(数据库)- 每位经理的下属员工数量
LeetCode(数据库)- 每位经理的下属员工数量
94 0
|
新零售 BI 项目管理
啥是好员工?
> 幸福的家庭都是相似的 不幸的家庭各有各的不幸 好员工都是相似的,不好的员工各有各的不好。好员工有哪些特征呢? # 1. 响应式而非命令式 计算机系统发展这么多年,一直在分层,就是为了封装复杂性,让调用者在不知道原理的前提下完成工作。每层的最终目标都是调用者只表达要求,不管具体实现。这就是所谓“响应式”,与之相反的则是“命令式”。“响应式”需要对原始问题高度抽象后表达成
1156 0
下一篇
DataWorks