两种口径
两种口径
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 防报错 |