X 是混合了数值和空值的列。
我不明白为什么将空值视为 0 会更改 AVG 值的结果。
不应该是这样吗
(2 + null + 2) / 3 = 2 -- with null value
(2 + 0 + 2) / 3 = 2 -- no null value
X 是混合了数值和空值的列。
我不明白为什么将空值视为 0 会更改 AVG 值的结果。
不应该是这样吗
(2 + null + 2) / 3 = 2 -- with null value
(2 + 0 + 2) / 3 = 2 -- no null value
如果您有null值,则不会将其考虑在内,因此元素的数量(您的n)不会增加,而0被视为有效值。
例如,如果您有:1,1,6,7,null,3,2它将被总数20除以6(ie 3.33)。但是,如果你用它替换null它0就会变成20 /7(即2.86)。
SQLFiddle在 MySQL 服务器上演示了这种行为。
参考:查看表格下方的文档:
This section describes group (aggregate) functions that operate on sets of values. Unless otherwise stated, group functions ignore NULL values.