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

如何将CASE语句输出与AVG函数结果放在同一查询列

问题原因

你写的SQL出现额外第三列,是因为你将CASE判断作为独立列放在了SELECT从句中,同时分组逻辑存在错误:GROUP BY加入Employee.ID会让分组粒度变成「部门+单个员工」,无法正确计算部门整体的平均薪资。

修正代码

你可以直接将空值判断作用在平均薪资的计算结果上,不需要单独新增列,同时修正分组规则即可:

SELECT 
  Department.NAME,
  COALESCE(AVG(Employee.salary), 0) AS avg_slr
FROM Department
LEFT JOIN Employee ON Department.ID = Employee.department_ID
GROUP BY Department.NAME

如果想要保留CASE写法也可以调整成如下格式:

SELECT 
  Department.NAME,
  CASE
    WHEN AVG(Employee.salary) IS NULL THEN 0
    ELSE AVG(Employee.salary)
  END AS avg_slr
FROM Department
LEFT JOIN Employee ON Department.ID = Employee.department_ID
GROUP BY Department.NAME

逻辑说明

COALESCE函数会返回传入参数中第一个非空的值,当部门没有关联的员工时,AVG(Employee.salary)的计算结果为NULL,此时就会返回0,完全符合你的需求。GROUP BY仅保留Department.NAME即可,不需要按员工ID分组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 20:54:04