Получить последовательный диапазон дат t для каждого идентификатора в улье - PullRequest
0 голосов
/ 08 мая 2020

У меня есть таблица с такими данными, как:

col1  col2
1      2020-01-15
1      2020-01-16
1      2020-01-17
1      2020-01-18
1      2020-01-20
2      2020-01-09
2      2020-01-10
2      2020-01-15

, и я хочу вывести что-то вроде этого

col1    min         max
1      2020-01-15  2020-01-18
1      2020-01-20  2020-01-20
2      2020-01-09  2020-01-10
2      2020-01-15  2020-01-15

Как вы можете видеть, для каждого идентификатора мне нужен диапазон дат для каждого следующего съел кусок, и если есть только одна дата, то minmax будет таким же

1 Ответ

1 голос
/ 08 мая 2020

Попробуйте следующее, вот демонстрация на сервере SQL.

select
  col1,
  min(col2) as mn,
  max(col2) as mx
from
(
  select
    col1,
    col2,
    date_sub(col2, -row_number() over (partition by col1 order by col2)) as rnk
  from myTable
) val
group by
  col1,
  rnk
order by
  col1

Вывод:

*-------------------------------*
| col1      mn          mx      |
*-------------------------------*
| 1    2020-01-15    2020-01-18 |
| 1    2020-01-20    2020-01-20 |
| 2    2020-01-09    2020-01-10 |
| 2    2020-01-15    2020-01-15 |
*-------------------------------*
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...