将 SUM 分析函数从 PostgreSQL 移至 Redshift

问题描述 投票:0回答:1

我在 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 相同结果的公式。

到目前为止我尝试过的:

  1. 没有 ORDER BY

  2. 带有框架“ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW”

  3. 带有框架“ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING”

我对每个选项都有不同的结果,并且没有一个与 PostgreSQL 解决方案匹配。

那么,我必须如何处理这个公式才能在 PostgreSQL 和 Redshift 上获得相同的结果?

postgresql amazon-redshift
1个回答
0
投票

只需删除“order by a.id”子句即可。以什么顺序对值进行求和并不重要。

© www.soinside.com 2019 - 2024. All rights reserved.