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

AVG 平均值与口径

平均值 = 非 NULL 值之和 ÷ 非 NULL 值个数;与 SUM/COUNT(*) 的口径不同,报表口径要先定义清楚。

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

两种口径

两种口径
SELECT AVG(amount)                  AS avg_non_null,
       SUM(amount) / COUNT(*)       AS avg_include_null_rows,
       SUM(amount) / NULLIF(COUNT(amount), 0) AS avg_safe
FROM orders
WHERE user_id = 42;
分母COUNT(col) 非 NULL 个数
整数平均MySQL 自动小数;PG 整数 AVG 返回 numeric
除零分母为 0 时用 NULLIF 防报错

易错点

  • AVG 与“总和/总行数”结果不同,报表说明里要写清是哪种平均
  • PostgreSQL 中 AVG(integer) 返回 numeric 不丢精度;MySQL 浮点列求平均可能有微小误差

数据来源与参考

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