2011-12-20 77 views
1

我有一個很長的sql查詢,可以計算一些關於付款和發貨的事情。在某些情況下,該值null.我認爲這是因爲有一個由0如果選擇的值爲空,mysql顯示0?

被劃分這裏是我的查詢的一小部分:

 ROUND(sum(case when shipping_method = 'c' AND (paid_amount - shipping_costs) < 70 then 1 end) * 100/sum(case when shipping_method = 'c' then 1 end),2) as co_less_70, 

我認爲,當這部分是0:sum(case when shipping_method = 'colissimo' then 1 end),2)我的查詢顯示空。有沒有什麼辦法爲co_less_70列指定一個默認值?

+2

你有沒有試過'IFNULL'? – Jomoos 2011-12-20 11:37:23

回答

1

您可以設置默認情況下,但任何東西,除了零: -

sum(case when shipping_method = 'colissimo' then 1 else some_value end case),2) 
+0

用戶希望在整個列爲NULL時爲其分配默認值,而不是除數爲0時的默認值。 – 2011-12-20 11:37:46

+0

如果沒有行shipping_method ='c',那麼你會得到0/0,這可能是什麼原因造成的問題。這不會解決它 - 任何其他的價值都會拋開數學。 – cHao 2011-12-20 11:39:27

3
IFNULL(
    ROUND(sum(case when shipping_method = 'c' AND (paid_amount - shipping_costs) < 70 then 1 end) * 100/sum(case when shipping_method = 'c' then 1 end),2) 
,<default>) AS co_less_70,