sql—如果postgresql/redshift中的值为null,则返回0的替代方法

yjghlzjz  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(613)

这个问题在这里已经有了答案

使用coalesce()避免嵌套聚合错误(1个答案)
10个月前关门了。
我现在有一个查询,如果值为null,它将返回一个零,我想找到其他方法来编写它,以便在postgresql/redshift中工作。

coalesce(sum(Score)/nullif(sum(ScorePrem),0),0) as percent

请提供替代方案,这将有助于我绕过嵌套聚合的错误

sq1bmfud

sq1bmfud1#

你可以试着用 case 表达式:

(case when sum(ScorePrem) = 0 then 0
      else sum(Score) / sum(ScorePrem)
 end)

但是,您的代码应该可以工作。
编辑:
第二个查询中至少有一个问题。您正在使用 = 指定别名。但在红移中,这只是一个布尔表达式,而不是 GROUP BY . 所以:

SELECT calendar_month_id, day_of_month, month_name, DaysRemaining, 
       'Entire' as RPTBRANCH, 1 as TotalGrp,
       sum(Score) as score,
       SUM(ScorePrem) as ScorePrem,
       coalesce(sum(Score)/nullif(sum(ScorePrem),0),0) as percent
FROM  #temp_score
GROUP BY calendar_month_id, day_of_month, month_name, DaysRemaining

相关问题