警報システムのログを含むデータベースがあるとします。間隔を置いて、データベースに新しい行が挿入されます。この行には、alarm_id、日時、およびアラームがオンかオフかを示すフラグがあります。
一定期間 (今日、今週、今月) にアラームがオン (武装 = 1) に設定されている時間を知りたいです。これは、armed=1 を持つ後続の行になります。armed=0 の行がある場合、カウントされない場合があります。
例えば:
id alarm_id armed date
1 1 0 2012-01-01 00:00:00
2 1 1 2012-01-01 00:10:00
3 1 1 2012-01-01 00:20:10
4 1 1 2012-01-01 00:29:58
5 1 0 2012-01-01 00:40:00
6 1 1 2012-01-01 01:00:00
7 1 1 2012-01-01 01:10:00
8 1 1 2012-01-01 01:20:00
9 1 0 2012-01-01 01:30:00
この例では、アラームは 00:10:00 から 00:29:58 => 19:58 分に設定されました。そして、1:00:00 から 1:20:00 までの武装 => 20 分。この日は、少なくとも 39:58 分間アラームが作動しており、それが私のクエリの結果である必要があります。
ログはハートビートのようなものなので、「オン」と「オフ」の状態の間でアラームを作動させることができますが、後続のどの行が作動するかを知りたいだけです = 1.
私はこれについて頭を悩ませてきました。テーブル自体に参加しましたが、これを行う方法がわかりません。それは可能ですか?データを操作するために SQL Fiddle を設定しました: http://sqlfiddle.com/#!2/9eca2/2/0
ありがとう。