如何在 Redshift 中滚动不同的计数?

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

我需要滚动 LTM 用户的唯一计数。 我查询生成开始和结束月份:

    select
        DATEADD('month', ROW_NUMBER() over() - 1, DATE('2019-06-01')) AS start_day,
        DATEADD('month', ROW_NUMBER() over() - 13, DATE('2019-06-01')) AS end_day
    from some_table
    limit date_diff('month', '2019-05-01', getdate())

我试图做这样的事情但是它抛出了一个错误:

with dates as
(
select *
from
    (
    select
        DATEADD('month', ROW_NUMBER() over() - 1, DATE('2019-06-01')) AS start_day,
        DATEADD('month', ROW_NUMBER() over() - 13, DATE('2019-06-01')) AS end_day
    from some_table
    limit date_diff('month', '2019-05-01', getdate())
    ) a
order by 1 desc
)

SELECT
    start_day,
    (
      SELECT
          COUNT(DISTINCT id) AS user_count
      FROM users
      WHERE date BETWEEN end_day AND start_day
    ) a
FROM dates
GROUP BY 1
ORDER BY 1 desc;

我收到一个错误

ERROR: subquery uses ungrouped column "dates.end_day" from outer query

count amazon-redshift distinct common-table-expression rolling-computation
© www.soinside.com 2019 - 2024. All rights reserved.