X是与数字和空值的混合物,通过柱。为什么AVG(X)给出了不同的答案比AVR((ISNULL(X,0))?
为什么处理空值,我不明白0更改AVG值的结果。
它不应该是这样的,
(2 + null + 2)/3 = 2 -- with null value
(2 + 0 + 2)/3 = 2 -- no null value
X是与数字和空值的混合物,通过柱。为什么AVG(X)给出了不同的答案比AVR((ISNULL(X,0))?
为什么处理空值,我不明白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
(即3.33
)划分。但是,如果将null
替换为0
,它将变为20
/
7
(即2.86
)。
SQLFiddle在MySQL服务器上演示这种行为。
参考:已在documentation权下表一看:
This section describes group (aggregate) functions that operate on sets of values. Unless otherwise stated, group functions ignore NULL values.
非常感谢您的澄清。只要我能够=) – iridescent
@iridescent:很高兴成为帮助:) –
感谢您的编辑。忘了缩进4个空格哈哈。 – iridescent