SQL專欄數據庫
SQL數據庫基礎知識彙總express
SQL數據庫高級知識彙總ide
問題函數
咱們在進行數據統計的時候,常常會遇到求百分比,環比,同比等這些須要除以某個數的狀況,而若是除數爲0,數據庫是會報錯的。code
那麼遇到這樣的狀況咱們怎麼處理呢?下面咱們用示例給你們講解一下處理方法。it
解決辦法io
狀況一class
例如 基礎
SELECT A/B FROM TAB
遇到這樣的狀況,通常的處理方法是用CASE WHEN來判斷B的值語法
SELECT CASE WHEN B=0 THEN 0 ELSE A/B END FROM TAB
這樣當B若是是0,咱們直接賦一個值,避免A/B參與計算報錯。
狀況二
上面是一種常見的狀況,可是若是遇到下面這樣的聚合函數呢?
例如
SELECT SUM(A)/COUNT(B) FROM TAB
遇到這樣的狀況CASE WHEN 是不能判斷COUNT(B)的值的,由於WHEN後面的條件不能使用聚合函數(語法要求),這個時候咱們能夠這樣處理
SELECT ISNULL(SUM(A)/NULLIF(COUNT(B),0),0) FROM TAB
其中這裏使用了兩個函數,NULLIF()和ISNULL()
NULLIF函數有兩個參數,定義以下:
NULLIF( expression1 , expression2 )
其做用就是:若是兩個指定的表達式相等,就返回NULL值。
ISNULL函數也有兩個參數,定義以下:
ISNULL( expression1 , expression2 )
其做用是:若是第一個參數的結果爲NULL,就返回第二個參數的值。
當COUNT(B)的結果爲0時,剛好與第二個給定的參數0相等,這個時候NULLIF函數就會返回NULL,而SUM(A)在除以NULL時結果爲NULL,外層使用ISNULL函數再對NULL值進行判斷,這樣最終結果就是0了。
這兩種方法就是咱們平常處理除數爲0的狀況了,必定要記得哦~