根据SQL为表格中的每个事件计数

Jor*_*evo 0 sql snowflake-cloud-data-platform

我在类似于PostgreSQL的类似SQL的数据库模式SQL中有表,类似于PostgreSQL,其中包含以下行:

server_time, user_id, transaction_id, revenue_eur
Run Code Online (Sandbox Code Playgroud)

我正在尝试查看重新转换,因此我想为每个用户计算他的第一,第二,第三...购买了什么。雪花允许横向连接,但我不确定该怎么做。

输出应如下所示:

      date     user_id   purchased_number
   2019-07-25  123121         1
   2019-07-26  123121         2
   2019-07-27  123121         3
   2019-07-25   8565          1  
   2019-07-25   8565          2
Run Code Online (Sandbox Code Playgroud)

a_h*_*ame 5

通常使用窗口函数完成此操作:

select cast(server_time as date), user_id, 
       row_number() over (partition by user_id order by server_time) as purchased_number
from the_table;
Run Code Online (Sandbox Code Playgroud)

假设server_time是用timestamp数据类型定义的列,则表达式cast(server_time as date)会将其转换为“普通”日期(无时间)。上面是ANSI标准SQL,但我不知道Snowflake是否支持。如果不是,则需要参考手册将timestamp值转换为date值。