1200 万滚动活跃客户

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

我有一个包含

order_date
customer_id
字段的订单表,对于 2022 年及以后的每个日期,我想使用 SQL 计算 12 个月滚动的不同活跃客户。

我已经尝试过了

SELECT
  order_date,
  COUNT(DISTINCT customer_id) OVER (ORDER BY order_date RANGE INTERVAL '360' day PRECEDING) AS customers_12m
  -- using a window function to create a 360d frame to count distinct customers during that time period
FROM
  orders
WHERE
  order_date >= '2021-01-01'
GROUP BY
  order_date
HAVING
  order_date >= '2022-01-01'

不知何故,我遇到了基于不同 DBMS 平台(Redshift、Exasol、Trino (Presto))的不同错误(不支持明显、不支持范围等)的问题。如果仅使用 SQL 就可以实现这一点,有人可以指导我吗?

输入样本

订单_日期 客户 ID
2023-01-01 X
2023-01-01
2023-01-02 X
2023-01-03 X
2023-01-04 Z
2023-01-05 Z

样本输出

这里假设 1 天,而不是 360 天

订单_日期 customers_1d
2023-01-01 2(X 和 Y)
2023-01-02 2(X 和 Y)
2023-01-03 1(仅限 X)
2023-01-04 2(X 和 Z)
2023-01-05 1(仅限 Z)
sql amazon-redshift presto data-lake exasol
1个回答
0
投票

这不就能给你你想要的吗?

SELECT
  order_date,
  COUNT(DISTINCT customer_id)
FROM
  orders
WHERE
  order_date >= '2021-01-01'
GROUP BY
  order_date
© www.soinside.com 2019 - 2024. All rights reserved.