>我目前有一个查询,如果值为 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