Создание минимальных и максимальных значений и сравнение их со значениями меток времени sql - PullRequest
0 голосов
/ 03 апреля 2020

У меня есть база данных PostgreSQL, и у меня есть таблица, к которой я обращаюсь с запросом, чтобы определить, какие печати были обновлены между первым циклом созданного времени_темпера и самым последним циклом созданного времени_стата. Вот пример таблицы, которая называется event_log_summary.

press_id    cycle_number    created_timestamp
    1           1           2020-02-07 16:07:52
    1           2           2020-02-07 16:07:53
    1           3           2020-02-07 16:07:54
    1           4           2020-04-01 13:23:10
    2           1           2020-01-13 8:33:23
    2           2           2020-01-13 8:33:24
    2           3           2020-01-13 8:33:25
    3           1           2020-02-21 18:45:44
    3           2           2020-02-21 18:45:45
    3           3           2020-02-26 14:22:12

Это запрос, который я использовал, чтобы получить вывод из трех столбцов: press_id, mincycle, max_cycle, но затем я хочу сравнить maxcycle made_timestamp для mincycle create_timestamp и посмотрите, есть ли между ними хотя бы x промежуток времени, скажем, по крайней мере 1 день, я не уверен, как это реализовать.

SELECT 
    press_id,
    MIN(cycle_number) AS minCycle,
    MAX(cycle_number) AS maxCycle
FROM
    event_log_detail
GROUP BY
    press_id

Я пробовал разные вещи, такие как использование WHERE (MAX (cycle_number) - MIN (cycle_number> 1), но я довольно новичок в SQL и не совсем знаю, как реализовать это Выходная информация, которую я ищу, будет иметь разницу как минимум в один день:

press_id
    1
    3

У прессов 1 и 3 их максимальный цикл создан_время_стампы не менее чем на 1 день, чем их минимальный цикл create_timestamp. Я просто ищу press_ids, чей первый цикл и последний цикл имеют разницу не менее 1 дня, мне не нужна никакая другая информация о выходе, только один столбец с press_ids. Любая помощь будет принята. Благодаря.

1 Ответ

0 голосов
/ 03 апреля 2020

Вы можете использовать предложение HAVING:

select press_id, 
       max(created_timestamp) - min(created_timestamp) as diff
from event_log_detail
group by press_id
having max(created_timestamp) > min(created_timestamp) + interval '1 day';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...