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

SQL AVG函数使用疑问:如何排除含NULL的类别并计算指定颜色均值

解决方法:排除存在NULL值的类别并计算平均值

嘿,我懂你的需求了——你不是想忽略单个NULL行来算平均值,而是要彻底排除那些只要有一行数值是NULL的颜色类别,对吧?这里有几种实用的SQL写法帮你实现:

方法1:GROUP BY + HAVING 直接过滤

这是最简洁的实现方式,利用聚合函数的特性判断类别中是否存在NULL:

SELECT colour, AVG(value) AS avg_value
FROM colour
GROUP BY colour
HAVING COUNT(value) = COUNT(*)

原理说明:

  • COUNT(*) 会统计每个颜色类别的所有行数(包含含NULL的行)
  • COUNT(value) 只会统计每个类别中value不为NULL的行数
  • 当两者相等时,说明这个类别里没有任何一行的value是NULL,自动排除了像white这种存在NULL的类别

方法2:用NOT EXISTS子查询过滤

如果你更喜欢直观的逻辑判断,这种写法会更易懂,直接排除存在NULL的颜色:

SELECT c.colour, AVG(c.value) AS avg_value
FROM colour c
WHERE NOT EXISTS (
    SELECT 1
    FROM colour c2
    WHERE c2.colour = c.colour
      AND c2.value IS NULL
)
GROUP BY c.colour

原理说明:

  • 子查询会检查当前颜色是否存在任意一行value为NULL的记录
  • NOT EXISTS 会筛选出完全没有NULL记录的颜色,再对这些颜色计算平均值

这两种方法都会返回你想要的结果:

colouravg_value
red5
blue5

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:04:22