首页/数据/SQL 速查/聚合函数与 NULL 的关系
本包目录(311 条)
查询基础33 条连接与子查询40 条
聚合与窗口函数54 条
函数速查60 条变更与事务52 条性能与执行计划72 条

聚合函数与 NULL 的关系

SUM/AVG/MAX/MIN 忽略 NULL 输入;无输入时返回 NULL;COUNT 家族的行为不同(COUNT(*) 为 0)。写报表时这组规则必须分清。

SQL 速查数据更新于 2026-10-12

行为演示

行为演示
CREATE TABLE t_demo (v INT);

SELECT COUNT(*), COUNT(v), SUM(v), AVG(v)
FROM t_demo;              -- 0, 0, NULL, NULL

INSERT INTO t_demo VALUES (1), (NULL), (3);

SELECT COUNT(*), COUNT(v), SUM(v), AVG(v)
FROM t_demo;              -- 3, 2, 4, 2.0000(分母为非 NULL 个数)
忽略 NULLSUM / AVG / MAX / MIN / COUNT(col)
空集结果除 COUNT 外均为 NULL
AVG 分母非 NULL 值个数

易错点

  • 空集上 SUM 返回 NULL,报表接口收到 null 时要有兜底,不要直接展示
  • 把 NULL 当 0 参与平均会拉低平均值,是否 COALESCE 取决于业务口径

数据来源与参考

  • MySQL 8.0 Reference Manual · Aggregate Function Descriptions
  • PostgreSQL Documentation · Aggregate Functions
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌