mysql sum() NULL 問題

今天在客戶反饋線上數據出現了異常,如下圖所示,正常值應該是百分百以內的,而且這個數值是隨機出現的,刷新幾下可能出現一次。

 

然後和後端在檢查了數據後,發現了select  sum()  數據會隨機出現不同的結果,而且是多次刷新後會出現的,再其次檢查數據,發現了數據中有NULL值,然後參考了其他網友的分享,發現sum中,Number+null =null,求平均函數avg() 也會出現這樣的結果。

解決辦法如下:

1. 使用case when  else 控制語句,如  case when sum(cnt) is null then 0 else sum(cnt) end"來代替sum(cnt)。

2. 使用COALESCE函數進行判斷,如COALESCE(SUM(name),0),COALESCE函數的意思是返回參數列表中第一個爲空的值,該方法允許傳入多個參數,該函數也是SQL中的標準函數。 如下所示:

SELECT COALESCE(SUM(name),0) FROM person WHERE id > 0   

3. 使用 IFNULL 函數,如 sum( IFNULL(cnt,0)  ) ,即判定數值中如果有null值,則返回0來參與計算。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章