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

SQL Server查询需求:统计经理下属总数及完成年度评审员工数

解决SQL Server中经理下属统计问题

问题核心

原查询的两个关键问题:

  • 使用INNER JOIN导致无评论记录的经理被排除;
  • 统计下属总数时错误关联评论表,仅统计了有评论的下属,而非所有活跃下属。

优化后的查询方案

假设你的表结构如下(字段名可根据实际情况替换):

  • employee表:emp_id(员工ID)、name(员工姓名)、manager_id(直属经理ID)、is_active(是否活跃,1=活跃)
  • comments表:emp_id(被评论员工ID)、comment_type_id(评论类型)、comment_date(评论日期)、manager_id(提交评论的经理ID)
SELECT
    m.emp_id AS manager_id,
    m.name AS manager_name,
    -- 统计活跃下属总数,无下属时显示0
    COALESCE(sub.total_active_subordinates, 0) AS total_active_subordinates,
    -- 统计指定日期后提交REVIEW评论的下属数,无评论时显示0
    COALESCE(rev.reviewed_subordinates, 0) AS reviewed_subordinates_count
FROM
    -- 筛选所有存在下属的经理
    (SELECT DISTINCT emp_id, name
     FROM employee
     WHERE EXISTS (SELECT 1 FROM employee sub WHERE sub.manager_id = employee.emp_id)) m
-- 左连接统计活跃下属的子查询
LEFT JOIN
    (SELECT manager_id, COUNT(emp_id) AS total_active_subordinates
     FROM employee
     WHERE is_active = 1
     GROUP BY manager_id) sub
    ON sub.manager_id = m.emp_id
-- 左连接统计符合条件评论的子查询
LEFT JOIN
    (SELECT manager_id, COUNT(DISTINCT emp_id) AS reviewed_subordinates
     FROM comments
     WHERE comment_type_id = 'REVIEW'
       AND comment_date > '2023-01-01' -- 替换为你的指定日期
     GROUP BY manager_id) rev
    ON rev.manager_id = m.emp_id
ORDER BY
    m.emp_id;

关键优化说明

  1. 保留所有经理:用LEFT JOIN替代INNER JOIN,确保无评论记录的经理也能出现在结果中;通过EXISTS精准筛选有下属的经理。
  2. 准确统计活跃下属:单独从employee表统计活跃下属,避免与评论表连接导致的重复计数。
  3. 去重统计评论下属:用COUNT(DISTINCT emp_id)避免同一下属多次被评论时重复计数。
  4. 处理空值:用COALESCE将无下属/无评论的情况显示为0,避免结果出现NULL。

适配comments表无manager_id的情况

如果comments表未直接存储经理ID,需通过employee表关联获取:

-- 调整评论统计子查询
LEFT JOIN
    (SELECT sub.manager_id, COUNT(DISTINCT c.emp_id) AS reviewed_subordinates
     FROM comments c
     JOIN employee sub ON c.emp_id = sub.emp_id
     WHERE c.comment_type_id = 'REVIEW'
       AND c.comment_date > '2023-01-01'
     GROUP BY sub.manager_id) rev
    ON rev.manager_id = m.emp_id

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 03:31:02