我有一个类似于客户 ID 和商品购买日期的数据表,如下所示。作为过滤器,我希望返回客户 ID,前提是给定的客户 ID 在过去 30 个滚动天内至少进行了 1 次购买。
这是可以用一个简单的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
Run Code Online (Sandbox Code Playgroud)
期望的输出:
Customer ID
233
111
23
Run Code Online (Sandbox Code Playgroud)
最初考虑使用 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
Run Code Online (Sandbox Code Playgroud) 我有一个如下所示的数据表:
User ID Co_UserID Name Total Tickets
1514677 1377535 Jose 273013
1514677 1377535 Jose 273013
1514677 1377535 Jose 273013
1514677 1377535 Jose 273013
1514677 1377535 Jose 273013
212121 31313 Rob 21212
312312 234134 James 33
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我有基于Jose 的用户 ID和Co_userID 的重复项。我试图返回 user_ID 和 co_userID 的组合出现一次的不同记录。
期望的输出:
User ID Co User ID Name Total Tickets
1514677 1377535 Jose 273013
212121 31313 Rob 21212
312312 234134 James 33
Run Code Online (Sandbox Code Playgroud)
我尝试运行如下查询,但无法选择多个不同值。有人可以建议吗?
SELECT distinct d.User_ID, distinct d.Co_userID, d.Name, d.Total_Tickets
From DATA d
Run Code Online (Sandbox Code Playgroud)