Die Suche nach allen Zeilen, in denen die letzte Ereigniszeit über einen bestimmten Zeitraum ist

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

  •  20-09-2019
  •  | 
  •  

Frage

Das bezieht sich auf OpenNMS, wo ich versuche, eine Automatisierung in SQL zu schreiben. Ich habe ein System, das die Sicherung erfolgreich jedes Mal Ereignisse an einen Tisch sendet. Ich möchte feststellen, ob die Sicherung für einen bestimmten Knoten überfällig ist. So zum Beispiel der (vereinfachte) Tabelle aussieht:

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

Also, was ich brauche, ist eine Liste der nodeid ist, wo die Sicherung um 24 Stunden Verspätung ist (und ich denke, wo keine Sicherung überhaupt stattgefunden hat, obwohl es Knoten in dieser Datenbank enthalten sind, die nach oben werden nicht unterstützt (wie sie sind verschiedene Typen von Knoten)).

War es hilfreich?

Lösung

Erste Liste von Knoten, die nicht gesichert wurden - aus dem Schema, dass Sie uns zeigten, -. Ist nicht möglich

Erste Liste von Knoten, die 24 Stunden überfällig sind, ist trivial:

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

Andere Tipps

Die folgende SQL ist für Oracle, aber ich nehme an, es gibt ähnliche Zeit-Handling-Einrichtungen in 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;

Dies Auf Knoten berichten, wo eine Sicherung nicht in den letzten 48 Stunden ausgeführt wird.

Teile und genießen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top