指定された期間にわたって最新のイベント時間がある任意の行を検索します
-
20-09-2019 - |
質問
ザ・私はSQLでの自動化を記述しようとしているのOpenNMSに関するものです。私は、テーブルへのバックアップが成功するたびにイベントを送信するシステムを持っています。私は、バックアップは、任意のノードに対して延滞であるかどうかを検出します。したがって、たとえば(簡体字)表は次のようになります:
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
彼らがそうであるように(バックアップされません。このデータベース内のノードがありますが、は、だから私は必要なものを24時間でバックアップが遅れてノードid年代のリストである(と私はバックアップがまったく発生していないところを推測しますノードの異なるタイプ))。
解決
あなたは私たちを示したスキーマから - - ことはできません。
バックアップされていないノードのリストを取得します
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時間で実行されていないノード上で報告します。
を共有し、お楽しみください。
所属していません StackOverflow