首页 > 其他分享 >1731. 每位经理的下属员工数量

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

时间:2023-05-20 09:22:16浏览次数:43  
标签:每位 1731 age reports id 汇报 employee 员工 下属

【题目】

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.

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/the-number-of-employees-which-report-to-each-employee


【思想】

内连接,去除掉没有被汇报人的项,然后先groupby分组后,再统计项数计算汇报人数,用avg计算平均年龄。

 

【代码】

SELECT A.employee_id,A.name,COUNT(*) 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;

 

标签:每位,1731,age,reports,id,汇报,employee,员工,下属
From: https://www.cnblogs.com/End1ess/p/17416760.html

相关文章

  • 570. 至少有5名直接下属的经理
    【题目】表:Employee+-------------+---------+|ColumnName|Type   |+-------------+---------+|id         |int    ||name       |varchar||department |varchar||managerId  |int    |+-------------+---------+Id是该表......
  • 力扣1112(MySQL)-每位学生的最高成绩(中等)
    题目:表:Enrollments(student_id,course_id)是该表的主键。问题编写一个SQL查询,查询每位学生获得的最高成绩和它所对应的科目,若科目成绩并列,取course_id最小的一门。查询结果需按student_id增序进行排序。示例Enrollments表:Result表: 建表语句:1CreatetableIf......
  • 测试平台RunnerGo,每位测试人员都该掌握的
    在软件开发中,软件质量保障是非常重要的环节,测试工作对于保证软件质量和用户体验至关重要。然而,测试流程繁琐,需要大量的人力和时间投入,往往会成为软件开发的瓶颈。一款好的测试平台可以大幅简化测试流程提高测试效率,其中,RunnerGo测试平台就是一种非常不错的选择。什么是RunnerGo?......
  • 力扣570(MySQL)-至少有5名直接下属的经理(简单)
    题目:Employee表包含所有员工和他们的经理。每个员工都有一个Id,并且还有一列是经理的Id。 给定Employee表,请编写一个SQL查询来查找至少有5名直接下属的经理。对于......
  • 计算一个数的每位之和(递归实现)
    #define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>/*思路:nn<10DigiSum(n)=DibiSum(n/10)+n%10//前n-1位之和+第N位*/intDigitSum(i......
  • 数据库题(二)——查找每位玩家第一次登陆平台的日期
    题目写一条SQL 查询语句获取每位玩家第一次登陆平台的日期。查询结果的格式如下所示:Activity表:+-----------+-----------+------------+--------------+|player_......
  • RAID控制卡下属的物理硬盘/虚拟磁盘状态
    硬盘状态RAID控制卡下属的物理硬盘有如表7-4所示的状态。表7-4 物理硬盘状态状态说明Online为某个虚拟磁盘的成员盘,可正常使用,处于在线状态。Unco......
  • 力扣每日一题2022.12.31---2037. 使每位学生都有座位的最少移动次数
    一个房间里有n 个座位和n 名学生,房间用一个数轴表示。给你一个长度为n 的数组 seats ,其中 seats[i]是第i 个座位的位置。同时给你一个长度为n 的数组 stude......
  • CF 1731H. Hot and Cold
    首先先找出哪个是closer(不知道语言=不知道pre和now的关系)发现(0,0)->(1,1)可以基本确定,除了(0,1)和(1,0)是相等距离的以外都是pre>now排除特殊点,按顺序问(0,1),(1,0),(0,......
  • SQL 求每位玩家最早登录的时间
    https://leetcode.cn/problems/game-play-analysis-i/submissions/ Activity表:+-----------+-----------+------------+--------------+|player_id|device_id|eve......