sql / hive按天汇总,然后按滚动平均值

时间:2018-08-02 21:50:58

标签: sql aggregation rolling-average

所以我有交易表:

cust_name,transaction_id,   timestamp,           amount,
bob,      134,              2018-01-01 14:33:20, 10 
bob,      125,              2018-01-01 15:32:20, 20 
bob,      562,              2018-01-02 06:33:20, 30 
bob,      126,              2018-01-02 11:49:10, 5 
bob,      897,              2018-01-02 14:33:20, 6 
bob,      455,              2018-01-03 05:04:09, 15
bob,      666,              2018-01-03 12:36:44, 40
bob,      990,              2018-01-05 12:35:00, 6 
other customers.....

客户在不同的时间戳下进行交易,transaction_id是唯一的。

我想为每一行计算其他变量。例如,该客户过去2天的最大或平均每日交易量。这是一种实时方式,我想通过一个查询来完成。为了更好地说明我想要实现的目标:

cust_name,transaction_id, timestamp, amount, sum of today,2_day_average, 2_day_max
bob,      134,    2018-01-01 14:33:20, 10,   10+20 = 30,  0        ,0
bob,      125,    2018-01-01 15:32:20, 20,   10+20 = 30,  0        ,0
bob,      562,    2018-01-02 06:33:20, 30,   41        ,  (30+41)/2,max(30,41)
bob,      126,    2018-01-02 11:49:10, 5,    41        ,  (30+41)/2,max(30,41)
bob,      897,    2018-01-02 14:33:20, 6,    41        ,  (30+41)/2,max(30,41)
bob,      455,    2018-01-03 05:04:09, 15,   55        ,  (41+55)/2,max(41,55)
bob,      666,    2018-01-03 12:36:44, 40,   55        ,  (41+55)/2,,max(41,55)
bob,      990,    2018-01-05 12:35:00, 6,    6         ,   (55+6)/2,,max(55,6)
other customers...

我想先创建“今天的总和”,然后在分区上使用总和,然后执行2_days_max和2_days_avg,但是我想知道是否有一种方法可以立即执行。

0 个答案:

没有答案