【发布时间】:2018-04-07 05:26:38
【问题描述】:
假设我的数据格式如下(仅供参考,总行数超过 30K):
customer_id order_date order_rank
A 2017-02-19 1
A 2017-02-24 2
A 2017-03-31 3
A 2017-07-03 4
A 2017-08-10 5
B 2016-04-24 1
B 2016-04-30 2
C 2016-07-18 1
C 2016-09-01 2
C 2016-09-13 3
我需要第 4 列,我们称之为 days_since_last_order,如果 order_rank = 1 然后为 0,则计算自上一个订单以来的天数(排名为 n-1)。
所以,上面会返回:
customer_id order_date order_rank days_since_last_order
A 2017-02-19 1 0
A 2017-02-24 2 5
A 2017-03-31 3 35
A 2017-07-03 4 94
A 2017-08-10 5 38
B 2016-04-24 1 0
B 2016-04-30 2 6
C 2016-07-18 1 79
C 2016-09-01 2 45
C 2016-09-13 3 12
有没有一种更简单的方法来使用窗口函数(或类似函数)而不是将整个数据集与自身连接起来(例如在 A.order_rank = B.order_rank - 1 上)并进行计算?
谢谢!
【问题讨论】:
标签: postgresql amazon-redshift