powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Список дат разбить на интервалы (по определенному разрыву между соседними датами)
4 сообщений из 4, страница 1 из 1
Список дат разбить на интервалы (по определенному разрыву между соседними датами)
    #39368158
АлK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго дня.

Помогите с запросом SQL.

Есть список дат:
26.11.2016 16:54:22
26.11.2016 16:55:24
26.11.2016 17:00:15
26.11.2016 17:02:07
26.11.2016 17:02:40
26.11.2016 17:13:47
26.11.2016 17:14:15
26.11.2016 17:14:46
27.11.2016 16:48:30
27.11.2016 16:48:31
27.11.2016 16:52:15

Нужно получить из него интервалы дат по следующему условию: "разывы" между соседними датами больше 10 минут (например).
То есть если следующее время больше предыдущего на 10 минут (список отсортирован), тогда начинается новый интервал, и т.д. до последней даты.

Для данного списка получится три интервала:
26.11.2016 16:54:22 - 26.11.2016 17:02:40
26.11.2016 17:13:47 - 26.11.2016 17:14:46
27.11.2016 16:48:30 - 27.11.2016 16:52:15
...
Рейтинг: 0 / 0
Список дат разбить на интервалы (по определенному разрыву между соседними датами)
    #39368167
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АлK,

lag/lead + старт оф групп

.....
stax
...
Рейтинг: 0 / 0
Список дат разбить на интервалы (по определенному разрыву между соседними датами)
    #39368180
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АлK,
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
  1  WITH t as (
  2  select to_date('26.11.2016 16:54:22','dd.mm.yyyy hh24:mi:ss') d from dual union all
  3  select to_date('26.11.2016 16:55:24','dd.mm.yyyy hh24:mi:ss') d from dual union all
  4  select to_date('26.11.2016 17:00:15','dd.mm.yyyy hh24:mi:ss') d from dual union all
  5  select to_date('26.11.2016 17:02:07','dd.mm.yyyy hh24:mi:ss') d from dual union all
  6  select to_date('26.11.2016 17:02:40','dd.mm.yyyy hh24:mi:ss') d from dual union all
  7  select to_date('26.11.2016 17:13:47','dd.mm.yyyy hh24:mi:ss') d from dual union all
  8  select to_date('26.11.2016 17:14:15','dd.mm.yyyy hh24:mi:ss') d from dual union all
  9  select to_date('26.11.2016 17:14:46','dd.mm.yyyy hh24:mi:ss') d from dual union all
 10  select to_date('27.11.2016 16:48:30','dd.mm.yyyy hh24:mi:ss') d from dual union all
 11  select to_date('27.11.2016 16:48:31','dd.mm.yyyy hh24:mi:ss') d from dual union all
 12  select to_date('27.11.2016 16:52:15','dd.mm.yyyy hh24:mi:ss') d from dual
 13  )
 14  ,tt as (select d,case when d-(lag(d,1,d) over (order by d) )<=1/24/6 then 0 else 1 end f from t)
 15  ,ttt as (select d,sum(f) over (order by d) gr from tt)
 16* select min(d) d_from,max(d) from ttt group by gr order by 1
SQL> /

D_FROM              MAX(D)
------------------- -------------------
26.11.2016 16:54:22 26.11.2016 17:02:40
26.11.2016 17:13:47 26.11.2016 17:14:46
27.11.2016 16:48:30 27.11.2016 16:52:15


....
stax
...
Рейтинг: 0 / 0
Список дат разбить на интервалы (по определенному разрыву между соседними датами)
    #39368213
АлK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
stax.., спасибо

то, что надо
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Список дат разбить на интервалы (по определенному разрыву между соседними датами)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]