Null和空值對於avg計算時產生的影響以及處理
阿新 • • 發佈:2021-12-24
為什麼要關注這一塊呢:1.面試中可能會有涉及 2.工作中真的也可能會用,既然有可能我也用過,就拿出來跟大家分享一下,上一篇的博文,資料已準備好就不做資料準備的介紹了。
step1:select * from a; ---進行資料查詢
step2: select avg(number) from a; ---求平均值
分析:從上述結果來看,他是除了4,我們可以在單獨驗證是空字串沒有算行還是null值沒有算呢,通過我們的實驗發現是null沒有算行。
在實際情況中我們要根據實際需要判斷空字串行以及null值所在的行要不要加入到計算行業中,這個時候我們就要引入我們的count函式根據實際需要靈活計算;
一、第一種空字串和null值所在的行要加入到計算範圍中:
select sum(number)/count(*) as avg from a;
二、第二種空字串和null值所在的行不要加到計算範圍中:
`IF`(expr1,expr2,expr3) ----使用if函式,若滿足條件1,則返回expr2,不滿足條件則返回expr3
問題關鍵就在於我們的count要把null和空字元全部剔除,首先使用我們的if函式把所有空字串轉化成null,然後使用count(欄位)---會自動過濾掉我們的null值所在的行
count(if(number ='',null,number))
select sum(number)/count(if(number ='',null,number)) as avg from a;
本文來自部落格園,作者:天行者_sky,轉載請註明原文連結:https://www.cnblogs.com/Skywal/p/15727704.html