|
Не сложная, но тяжелая задачка с партициями
|
|||
---|---|---|---|
#18+
Всем привет! Кто может подсказать, как посчитать сколько в среднем транзакций делает каждый пользователь в течение 72 часов после первой совершенной транзакции? То есть тут нужно для начала видимо разбить на партиции относительно user_id Потом найти в каждой такой партиции самую первую транзакцию (отсортировава по возрастанию поле transaction_ts и взяв первую строку в каждой партиции) Потом необходимо пробежаться по всей партиции и найти: какие транзации были в интервале от "самая первая транзакция + 1 секунда" до "самая первая транзакция + 72 часа" Затем в каждой партиции посчитать сколько было таких транзакций И, наконец, взять из этих двух чисел (так как пользователя всего два в данном примере) среднее Чисто технически не могу понять как такое реализовать, может быть есть кто знает, как такое можно сделать или может быть вообще есть логика попроще той, что я обозначил. Заранее спасибо 🙏 Если необходимо могу сбросить скрипт для создания и наполнения такой таблицы: CREATE TABLE Transactions ( transaction_ts TIMESTAMP, user_id int, transaction_id int, item varchar (30) ); INSERT INTO Transactions VALUES ('06/18/2010 10:00:00',1, 11, 'oil-1'); INSERT INTO Transactions VALUES ('06/19/2010 10:00:00',1, 12, 'oil-2'); INSERT INTO Transactions VALUES ('06/20/2010 10:00:00',1, 13, 'oil-3'); INSERT INTO Transactions VALUES ('06/21/2010 10:10:00',1, 14, 'oil-4'); INSERT INTO Transactions VALUES ('06/1/2010 10:00:00',2, 21, 'beer-1'); INSERT INTO Transactions VALUES ('06/2/2010 10:00:00',2, 22, 'beer-2'); INSERT INTO Transactions VALUES ('06/2/2010 10:30:00',2, 23, 'beer-3'); INSERT INTO Transactions VALUES ('06/3/2010 10:00:00',2, 24, 'beer-4'); INSERT INTO Transactions VALUES ('06/4/2010 10:10:00',2, 25, 'beer-5'); ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2021, 15:40 |
|
Не сложная, но тяжелая задачка с партициями
|
|||
---|---|---|---|
#18+
Схематично: Код: sql 1. 2. 3. 4. 5.
Вместо звёзд подставить список нужных полей. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2021, 19:46 |
|
Не сложная, но тяжелая задачка с партициями
|
|||
---|---|---|---|
#18+
Akina, а какие таблицы тут предполагалось соединять с помощью JOIN? По сути все данные лежат в одной таблице ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2021, 21:23 |
|
|
start [/forum/topic.php?fid=47&fpage=8&tid=1828048]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
74ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
others: | 231ms |
total: | 405ms |
0 / 0 |