>我在红移中有一个"除以0"之谜,它不是来自分母为0。
我有两列都是小数:销售额总是> 0,这是我的分母。"标记的销售额"介于 0 和最高 Sales 值之间。 当我运行下面的代码(使用 Postico 查询 Redshift 时),我得到了正确的结果,除了当"标记的销售"=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
;