作为一个具体的例子,我有一个T
带有列的表格,customer
并date
指示个别客户购买的日期:
customer | date
----------------------
A | 01/01/2013
A | 02/01/2013
A | 07/01/2013
A | 11/01/2013
B | 03/01/2013
B | 08/01/2013
我想为每一对(customer, date)
pair添加另一列(c, d)
,给出这样的(c', d')
对数和。下面是这个额外列的表格:T
c = c'
0 <= days(d) - days(d') <= 7
customer | date | new_column
----------------------------------
A | 01/01/2013 | 1
A | 02/01/2013 | 2
A | 07/01/2013 | 3
A | 11/01/2013 | 2
B | 03/01/2013 | 1
B | 10/01/2013 | 1
作为我用来解决这个问题的步骤的粗略想法:
- 创建一个
T'
包含所有可能对的表(c,d)
; - 左
T
加入T'
; - 创建一个新列:
count(date) over (partition by customer order by date asc rows between 6 preceding and 0 following)
; - 省略此新表中的任何行
T.date is null
但是,我不认为这是可扩展的。
为任何帮助而欢呼。