Как выбрать максимальную метку времени и минимальную метку времени для каждого интервала - PullRequest
0 голосов
/ 03 июня 2018

enter image description here

Я буду использовать mysql или postgresql.

Можно ли выбрать максимальную и минимальную временную метку каждого интервала по разделу 2?

например:

red block:2018-05-27 15:11:49~2018-05-27 15:11:54
green block:2018-05-27 15:11:55~2018-05-27 15:12:12
yellow block:2018-05-27 15:12:13~2018-05-27 15:12:16

1 Ответ

0 голосов
/ 03 июня 2018

Это проблема пробелов и островков.Я настоятельно рекомендую Postgres.Она легко решается с использованием разницы номеров строк:

select section1, section2, min(datetime), max(datetime)
from (select t.*,
             row_number() over (partition by section1 order by datetime) as seqnum_1,
             row_number() over (partition by section1, section2 order by datetime) as seqnum_12
      from t
     ) t
group by (seqnum_1 - seqnum_12);

Разница номеров строк определяет интересующие вас разделы. Причину немного сложно объяснить, но если вы запустите подзапрос, выможно увидеть, что происходит - разница постоянна для каждого интересующего раздела.

Тот же код будет работать в MySQL 8.0.Однако более ранние версии MySQL не поддерживают оконные функции, поэтому вычисления намного труднее.

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