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)
通常使用窗口函数完成此操作:
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值。