我在 PostgreSQL 中有以下代码,我需要在 Amazon Redshift 上重现该代码:
select *
from
(
select distinct
a.id
, sum(case when a.is_batch_empty then 1 else 0 end) over (partition by a.client_id order by a.id) as empty_count
from my_temp_table a
) a
where a.id = 111
在 Amazon Redshift 中,此代码执行失败并出现以下错误:
带有
子句的聚合窗口函数需要框架子句ORDER BY
因此,在 Redshift 上,我需要添加
ROWS BETWEEN
部分。
问题是我找不到给出与 PostgreSQL 相同结果的公式。
到目前为止我尝试过的:
没有 ORDER BY
带有框架“ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW”
带有框架“ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING”
我对每个选项都有不同的结果,并且没有一个与 PostgreSQL 解决方案匹配。
那么,我必须如何处理这个公式才能在 PostgreSQL 和 Redshift 上获得相同的结果?
只需删除“order by a.id”子句即可。以什么顺序对值进行求和并不重要。