簡體   English   中英

分子而不是分母為0時出現“除以零”錯誤

[英]Getting 'divide by zero' error when numerator, not denominator is 0

我在Redshift中有一個“被0除”的謎,它不是來自分母為0。

我有兩列都是小數點的列:銷售總是> 0,這是我的分母。 “浮動銷售”介於0到最大Sales的值之間。

當我運行下面的代碼(使用Postico查詢Redshift)時,我得到了正確的結果,除了“ Flagged Sales” = 0時,我希望結果為0,而不是NULL。

 SELECT NULLIF("Flagged Sales") / NULLIF(Sales,0)::decimal AS "% of Sales Flagged" FROM Table1; 

分子為0時,以下嘗試獲取0的嘗試導致了“除以零”錯誤:

 CASE WHEN (NULLIF("Flagged Sales",0) / NULLIF(Sales,0)::decimal) IS NULL THEN 0 ELSE (NULLIF("Flagged Sales",0) / NULLIF(Sales,0)::decimal) END AS "% of Sales Flagged" 

與:

 COALESCE((NULLIF("Flagged Sales") / NULLIF(Sales,0)::decimal)) AS "% of Sales Flagged" 

任何想法為什么會這樣?

以下代碼對標記銷售和銷售的所有組合均適用

select COALESCE(("Flagged Sales" / NULLIF(Sales,0)),0) AS "% of Sales Flagged"
from (select 0 as "Flagged Sales", 0 as Sales) as a
;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM