You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

查询拥有至少5名直属下属的管理者 - SQL问题求解

SQL查询问题排查与正确解法

现有表结构与数据

表employee3_3包含字段id、name、department、managerId,数据如下:

idnamedepartmentmanagerId
101JohnAnull
102DanA101
103JamesA101
104AmyA101
105AnneA101
106RonA101

需求:找出拥有至少5名直属员工的管理者。


第一个查询的问题

WITH cte AS
( 
    SELECT 
        name, managerid,
        (SELECT COUNT(b.managerid) 
         FROM employee3_3 AS b) AS result
    FROM
        employee3_3
)
SELECT employee3_3.name
FROM employee3_3
FULL JOIN cte ON employee3_3.name = cte.name
WHERE result = 5    
  AND cte.managerid = NULL
  • 子查询无关联条件:里面的COUNT(b.managerid)统计的是全表所有非空managerid的总数(这里刚好是5),不是按每个管理者分组统计的直属员工数
  • 空值判断错误:SQL里判断空值必须用IS NULL,cte.managerid = NULL永远不会匹配到任何数据
  • 逻辑冗余:FULL JOIN完全没必要,整个查询的关联逻辑混乱,没有聚焦到“按管理者统计员工数”的核心需求

第二个查询的问题

WITH cte AS
(
    SELECT  
        managerid, COUNT(managerid) AS number_of_employees
    FROM 
        employee3_3
    GROUP BY
        managerid, managerid
)
SELECT name
FROM employee3_3 AS e
JOIN cte ON e.managerid = cte.managerid
WHERE cte.number_of_employees <= 5
  • GROUP BY冗余:重复写managerid属于多余操作,只需写一次即可
  • JOIN条件错误:应该用e.id = cte.managerid来关联管理者的id和员工统计的managerid,当前条件关联的是员工自己的managerid,会把所有员工都查出来,而非管理者
  • 条件方向错误:需求是“至少5名”,应该用>=5而不是<=5

正确解法

方法1:使用CTE分组统计后关联

WITH manager_employee_count AS (
    SELECT 
        managerId, 
        COUNT(*) AS direct_employees
    FROM employee3_3
    WHERE managerId IS NOT NULL  -- 只统计有上级的员工,排除管理者自己
    GROUP BY managerId
    HAVING COUNT(*) >= 5  -- 筛选出直属员工数>=5的管理者ID
)
SELECT e.name
FROM employee3_3 e
JOIN manager_employee_count mec ON e.id = mec.managerId;

方法2:子查询直接关联

SELECT e.name
FROM employee3_3 e
JOIN (
    SELECT 
        managerId, 
        COUNT(*) AS direct_employees
    FROM employee3_3
    WHERE managerId IS NOT NULL
    GROUP BY managerId
    HAVING COUNT(*) >= 5
) mec ON e.id = mec.managerId;

两种方法的逻辑一致:

  1. 先从员工表中按managerId分组,统计每个管理者的直属员工数,筛选出数量≥5的managerId
  2. 将统计结果和原表关联,通过管理者的id匹配对应的name

执行后会正确返回结果:John

内容的提问来源于stack exchange,提问作者Ale

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 13:35:27