Предположим, что у меня есть таблица, которая выглядит так, что дает мне время различных событий за считанные секунды.SQL: выберите строки только со значениями, разделенными заданным интервалом, из других результатов.
event_time
----------
11
14
18
20
25
39
42
43
50
Я пытаюсь придумать запрос, который даст мне набор строк из этой таблицы, где каждая строка отделена, по меньшей мере, 10 секунд от других строк в результате.
Желаемый результат был бы:
event_time
----------
11
25
39
50
В строке с event_time=11
включен, потому что нет ничего предшествующих ему. Строка с event_time=25
является следующей, которая будет возвращена, потому что это первая строка, которая находится не менее 10 секунд от строки с event_time=11
.
Я использую Postgres. Я мог бы сделать это с помощью рекурсивного запроса/CTE, но не могу сделать эту работу без использования предложения ORDER BY, LIMIT и т. Д., И Postgres, по-видимому, не допускает их в рекурсивных запросах.
Какой язык программирования содержит SQL? Зачем пытаться делать это с помощью SQL? – Apalala
Потому что я хотел бы, чтобы это оценивалось в базе данных, если это вообще возможно, и не полагаться на передачу всего набора данных по сети, которая будет обрабатываться на клиенте. – avalys
Для этого вам нужно использовать рекурсивный CTE. Если у вас много данных, это может быть более эффективным для этого на стороне приложения. –