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

SQL查询department表仅返回非空记录及筛选员工数超38部门问题

SQL查询问题修复方案

原代码存在的问题

  • 外层查询未过滤department为NULL的记录,会直接返回空部门行
  • 子查询中的department is not null仅限制了子查询统计范围,无法排除外层的空部门记录
  • 不满足员工数>38的部门对应子查询会返回NULL,最终结果会出现大量无效的部门+NULL的行

推荐最优实现

优先使用GROUP BY分组聚合实现,逻辑更清晰、执行效率更高:

SELECT 
  department,
  COUNT(employee_id) AS employee_count
FROM employees
WHERE department IS NOT NULL
GROUP BY department
HAVING COUNT(employee_id) > 38;

实现逻辑说明

  1. WHERE department IS NOT NULL先提前过滤所有空部门的记录,避免无效统计
  2. 按department字段分组,用COUNT(employee_id)统计每个部门的在职员工数
  3. HAVING子句对聚合后的结果过滤,仅保留员工数超过38人的部门记录,无需额外加DISTINCT去重

原写法兼容修改

如果需要保留原有关联子查询的写法,可按以下方式调整:

SELECT DISTINCT 
  department,
  (
    SELECT COUNT(employee_id)
    FROM employees AS e1
    WHERE e2.department = e1.department
  ) AS employee_count
FROM employees AS e2
WHERE e2.department IS NOT NULL
HAVING employee_count > 38;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 00:54:04