Как сгруппировать строки по отметке времени? - PullRequest
0 голосов
/ 29 марта 2020

У меня есть таблица типа

id         created_at
=========  =========
1          1585461059805
2          1585461062502
3          1585461073123
4          1585461081885
...

Второй столбец - это отметка времени. Я хотел бы объединить последовательности строк без промежутка в 5000 мс.

Можно ли уменьшить результат запроса SELECT?

1 Ответ

4 голосов
/ 29 марта 2020

Вы можете использовать LAG для этой цели:

WITH cte AS (
    SELECT *, LAG(created_at, 1, created_at - 5001)
                  OVER (ORDER BY id) lag_created_at
    FROM yourTable
)

SELECT id, created_at
FROM cte
WHERE created_at - lag_created_at > 5000;

Обратите внимание, что я использую значение задержки по умолчанию created_at - 5001, чтобы покрыть крайний край самой первой записи. Эта первая запись не имеет задержки, но мы все еще хотим включить ее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...