PostgreSQL窗口功能&日期之间的差异

时间:2017-10-26 00:27:49

标签: postgresql amazon-redshift

假设我的数据格式如下(FYI,总行数超过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上)并执行计算?

谢谢!

1 个答案:

答案 0 :(得分:2)

使用延迟窗函数

data:'XML Request :<?xml version="1.0" encoding="utf-8"?>........