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.