У меня есть таблица, которая содержит записи о покупках клиентов, мне нужно указать, что покупка была сделана в определенном окне даты и времени, одно окно составляет 8 дней, поэтому, если у меня была покупка сегодня и одна через 5 дней, это означает, что моя покупка, если окно номер 1, но если я сделал это в первый день сегодня и в следующий через 8 дней, первая покупка будет в окне 1, а последняя покупка - в окне 2.
create temporary table transactions
(client_id int,
transaction_ts datetime,
store_id int)
insert into transactions values
(1,'2018-06-01 12:17:37', 1),
(1,'2018-06-02 13:17:37', 2),
(1,'2018-06-03 14:17:37', 3),
(1,'2018-06-09 10:17:37', 2),
(2,'2018-06-02 10:17:37', 1),
(2,'2018-06-02 13:17:37', 2),
(2,'2018-06-08 14:19:37', 3),
(2,'2018-06-16 13:17:37', 2),
(2,'2018-06-17 14:17:37', 3)
окно 8 дней, проблема в том, что я не понимаю, как указать для плотности_rank() OVER (PARTITION BY), чтобы посмотреть дату и время и сделать окно через 8 дней, в результате мне нужно что-то вроде этого
1,'2018-06-01 12:17:37', 1,1
1,'2018-06-02 13:17:37', 2,1
1,'2018-06-03 14:17:37', 3,1
1,'2018-06-09 10:17:37', 2,2
2,'2018-06-02 10:17:37', 1,1
2,'2018-06-02 13:17:37', 2,1
2,'2018-06-08 14:19:37', 3,2
2,'2018-06-16 13:17:37', 2,3
2,'2018-06-17 14:17:37', 3,3
Любая идея, как это получить? Я могу запустить его в Mysql или Spark SQL, но Mysql не поддерживает разделы. До сих пор не могу найти решение! любая помощь