当分子(而非分母)为 0 时出现"除以零"错误



>我在红移中有一个"除以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
;

相关内容

  • 没有找到相关文章

最新更新