我在Redshift中有一个'除以0'的神秘感,它并非来自分母为0。
我有两列都是小数:销售总是> 0,这是我的分母。 “已标记的销售额”介于0和最高销售额之间。
当我运行下面的代码(使用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"
为什么会发生这种情况?
答案 0 :(得分:0)
以下代码适用于已标记销售和销售的所有组合
select COALESCE(("Flagged Sales" / NULLIF(Sales,0)),0) AS "% of Sales Flagged"
from (select 0 as "Flagged Sales", 0 as Sales) as a
;