小编Bla*_*ite的帖子

Snowflake SQL 按最近滚动 30 天内的事务进行过滤

我有一个类似于客户 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)

sql snowflake-cloud-data-platform

11
推荐指数
2
解决办法
1万
查看次数

Snowflake 根据不同列值的组合返回记录一次

我有一个如下所示的数据表:

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 的用户 IDCo_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)

sql snowflake-cloud-data-platform

1
推荐指数
1
解决办法
1574
查看次数

标签 统计

snowflake-cloud-data-platform ×2

sql ×2