3、字段值為null時,sum的值
4、對非計數型別使用sum函式
5、結論
專案中的sql指令碼中遇到了
select ifnull(
sum(欄位名),0
)from table_name
該型別的寫法,目的很明確,就是為了在sum值為null,也能夠返回數字0;那問題就來了,
什麼情況下sum的值會為null?
如果累加的欄位名為出現null值時,sum會返回什麼呢?
如果非計數型別的字段進行累加時(比如varchar),會出現什麼情況呢?
2.1 官方文件
當然先查查一下官方文件(5.7版本),描述如下:
官方文件明確說明了,當結果集中沒有資料時,那sum的值為則返回null;
這是官方說法,我們當然也可以自己驗證一下;
2.2 本地演示
本地演示資料
3.1 本地演示
表結構和表資料如上所示4.1 本地演示
表結構和表資料如上所示結果集為空時,則sum結果為null
累加字段出現null時,不參與累加計算
對非計數字段使用sum,返回0而非null
思考:使用sum函式時,會出現返回null的情況,所以我們可以使用ifnull函式或者coalesce函式進行包裹,確保返回的數值型別(如前言所示);但是這裡我們不需要對sum中的字段再次進行ifnull的判斷,可以認為,sum函式已經很好的處理了統計欄位為null的情況,即
select ifnull(
sum(ifnull(欄位名),0
),0)
from table_name
這樣是完全沒必要的。 mysql的SUM函式結果
新專案在設計資料庫欄位時將部分儲存數字的字段設計成字串格式,開發環境和測試環境都沒有出問題,但在發布到生產環境上時出現格式轉換錯誤。查詢日誌發現是字串格式的數字進行加運算時出現的格式轉換錯誤 integer.valueof,測試發現是資料查詢的結果存在0.0資料,懷疑是對該字段執行的sum操作導致。...
Mysql中的sum函式為null時的解決辦法
在mysql中sum函式查出的最終結果為0的時候會顯示null,這時候就需要將null轉為0 方法1 使用ifnull expr1,expr2 函式 select ifnull sum ss 0.0 as sum from fd order fo2 where fo2.buyer id 11 結果為...
python中的sum函式 sum axis 1
看起來挺簡單的樣子,但是在給sum函式中加入引數。sum a,axis 0 或者是.sum axis 1 就有點不解了 在我實驗以後發現 我們平時用的sum應該是預設的axis 0 就是普通的相加 而當加入axis 1以後就是將乙個矩陣的每一行向量相加 例如 import numpy as np n...