【发布时间】:2021-06-25 08:51:46
【问题描述】:
我有一个类似于客户 ID 和商品购买日期的数据表,如下所示。作为过滤器,如果给定的客户 ID 在过去 30 滚动天内至少有 1 次购买,我想返回客户 ID。
这可以通过简单的WHERE 子句来完成吗?出于我的目的,这个数据表有很多记录,其中一个客户 ID 可能有数百个交易
Customer ID Item Date Purchased
233 2021-05-27
111 2021-05-27
111 2021-05-21
23 2021-05-12
412 2021-03-11
111 2021-03-03
期望的输出:
Customer ID
233
111
23
最初认为使用 CTE 最初过滤掉过去 30 天内没有至少购买 1 件商品的任何用户。尝试了以下两种不同的 where 语句,但都无法返回错误的日期时间范围。
SELECT *
FROM data d
WHERE 30 <= datediff(days, d.ITEM_PURCHASE_DATE, current_date) X
WHERE t.DATE_CREATED <= current_date + interval '30 days' X
【问题讨论】:
-
当您说过去 30 天滚动时,您只是指当前日期前 30 天发生的交易(并且当前日期每天移动)。如果是这样,您为什么希望在结果中看到 customer_id 23?由于您在 2021-06-25(您的示例中的当前日期)发布此内容
标签: sql snowflake-cloud-data-platform