У меня есть таблица, которая выглядит следующим образом:
user_id_from | user_id_to | event_time_in_microseconds
-------------+------------+---------------------------
1 | 2 | 1368770629103960
1 | 2 | 1368770629183960
2 | 1 | 1368770629203960
2 | 3 | 1368770629103980
2 | 1 | 1368770622103960
Я ищу создать запрос, который найдет кластеры событий для каждой пары (user_id_from, user_id_to)
, которые существуют в течение определенного интервала времени, где онаимеет значение, является ли пользователь user_id_from
или user_id_to
(например, (1, 2)
и (2, 1)
выше - это разные "пары").
Вывод будет выглядеть примерно так (это фиктивные данные, которых у меня нет 't создано тщательно / проверено) this:
user_id_from | user_id_to | first_event_time_in_microseconds | last_event_time_in_microseconds | count_of_events
-------------+------------+----------------------------------+---------------------------------+----------------
1 | 2 | 1368770629103960 | 1368770629183960 | 2
2 | 1 | 1368770622103960 | 1368770629203960 | 2
Обратите внимание, что пара (2, 3)
не отображается, поскольку существует только одно событие.
Некоторые другие уточняющие потребности для запроса:
- Я хотел бы сделать запрос для обработки разных временных окон (например, один час, один день, одна неделя)
- Я хотел бы отфильтровать кластеры на основе некоторого минимума/ динамический порог (например, 1 событие, 10 событий)
- Я хочу только одну строку для каждого кластера. Например, если в заданный период времени был кластер с 10 событиями, и я ищу кластеры с минимум 5 событиями, я все равно хотел бы, чтобы запрос возвращал только одну запись