sql/hive агрегировано по дням, затем скользящее среднее

Итак, у меня есть таблица транзакций:

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.....

Клиенты совершают транзакции с разной отметкой времени, идентификатор транзакции уникален.

Я хочу для каждой строки рассчитать дополнительные переменные. Например, максимальные или средние ежедневные транзакции за последние 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 ответов

Другие вопросы по тегам