Поиск любых строк, в которых время последнего события относится к указанному периоду

StackOverflow https://stackoverflow.com/questions/1920456

  •  20-09-2019
  •  | 
  •  

Вопрос

Это относится к OpenNMS, где я пытаюсь написать автоматизацию на SQL.У меня есть система, которая отправляет события в таблицу каждый раз, когда резервное копирование завершается успешно.Я хочу определить, просрочена ли резервная копия для какого-либо данного узла.Так, например, (упрощенная) таблица выглядит следующим образом:

nodeid, eventid, eventuei, eventtime
  1   ,  1     , backupOk, 09:20 15/12/09
  2   ,  2     , backupOk, 09:25 15/12/09
  3   ,  3     , backupOk, 09:30 15/12/09
  1   ,  4     , backupOk, 09:20 16/12/09
  2   ,  5     , backupOk, 09:25 16/12/09
  2   ,  6     , backupOk, 09:25 17/12/09
  3   ,  7     , backupOk, 09:30 17/12/09

Итак, что мне нужно, так это список nodeid, где резервное копирование просрочено на 24 часа (и я предполагаю, что резервное копирование вообще не производилось, хотя в этой базе данных есть узлы, которые не получают резервного копирования (поскольку это разные типы узлов)).

Это было полезно?

Решение

Получение списка узлов, для которых не было создано резервное копирование - из вашей схемы, которую вы нам показали, - невозможно.

Получение списка узлов, просроченных на 24 часа, является тривиальным:

select nodeid, max(eventtime)
from your_table
group by nodeid
having max(eventtime) < now() - '24 hours'::interval

Другие советы

Следующий SQL предназначен для Oracle, но я предполагаю, что в PostgreSQL есть аналогичные средства обработки времени:

SELECT E.NODEID, E.LAST_BACKUP_TIME
  FROM (SELECT NODEID, MAX(EVENTTIME) AS LAST_BACKUP_TIME
          FROM BACKUP_EVENTS
          WHERE EVENTUEI = 'backupOk'
          GROUP BY NODEID) E
  WHERE E.LAST_BACKUP_TIME < SYSDATE - INTERVAL '2' DAY;

Это позволит получить отчет об узлах, на которых резервное копирование не выполнялось в течение последних 48 часов.

Делитесь и наслаждайтесь.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top