我在类似于PostgreSQL的类似SQL的数据库模式SQL中有表,类似于PostgreSQL,其中包含以下行:
server_time, user_id, transaction_id, revenue_eur
我正在尝试查看重新转换,因此我想为每个用户计算他的第一,第二,第三...购买了什么。雪花允许横向连接,但我不确定该怎么做。
输出应如下所示:
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
a_horse_with.. 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;
假设server_time
是用timestamp
数据类型定义的列,则表达式cast(server_time as date)
会将其转换为“普通”日期(无时间)。上面是ANSI标准SQL,但我不知道Snowflake是否支持。如果不是,则需要参考手册将timestamp
值转换为date
值。
通常使用窗口函数完成此操作:
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;
假设server_time
是用timestamp
数据类型定义的列,则表达式cast(server_time as date)
会将其转换为“普通”日期(无时间)。上面是ANSI标准SQL,但我不知道Snowflake是否支持。如果不是,则需要参考手册将timestamp
值转换为date
值。