如果值在 postgreSQL/Redshift 中为空,则返回 0 的替代方法



>我目前有一个查询,如果值为 null,则返回零,我想找到编写它的替代方法,以便它在 PostgreSQL/redshift 中工作。

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

请为我提供替代方案,以帮助我解决嵌套聚合的错误

您可以尝试使用case表达式:

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

但是,您的代码应该可以工作。

编辑:

您在第二个查询中至少有一个问题。 您正在使用=来分配别名。 但在Redshift中,这只是一个布尔表达式 - 而不是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

相关内容

  • 没有找到相关文章

最新更新