指定された期間にわたって最新のイベント時間がある任意の行を検索します

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

  •  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時間で実行されていないノード上で報告します。

を共有し、お楽しみください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top