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