3
假設我有一個帶有報警系統日誌的數據庫。間隔時間會插入數據庫中的新行。該行具有alarm_id,一個日期時間和一個標誌,用於報警是打開還是關閉。MySql:計數間隔
我想知道一段時間(今天,本週,本月)警報設置爲開啓(武裝= 1)多長時間。那將是武裝= 1的後續行。如果有一行武裝= 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至0點29分58秒=> 19點58分鐘武裝。 從1:00:00到1:20:00佈防=> 20分鐘。爲了這一天,警報已經持續了至少39:58分鐘,這必須是我的查詢結果。
日誌就像一個心跳,所以警報可以在「開」和「關」狀態之間進行佈防,但我只想知道隨後的行佈防= 1。
我一直在爲此而感到頭疼。我自己加入了桌子,但我無法弄清楚如何做到這一點。它甚至有可能嗎? 我已經設置了一個SQL小提琴玩數據:http://sqlfiddle.com/#!2/9eca2/2/0
謝謝。
謝謝您的查詢。它確實給出了一個有趣的結果。我更新了SQL小提琴:http://sqlfiddle.com/#!2/9eca2/26 從這個查詢中獲得總數(39:58)仍然很困難。你不能只計算/總結'時間'值的總和。是否有可能在純SQL中獲得結果? – user1540127 2012-07-26 06:57:31
我更新了新的查詢,只是嘗試它。它會給你準確的結果爲39:58 – Omesh 2012-07-26 09:23:31
這似乎很棒。編輯/嘗試它時我犯了錯誤嗎?在SQL小提琴它給我1:19:56:http://sqlfiddle.com/#!2/9eca2/37 我只更改列'adate'到日期以匹配表中的列。 非常感謝您的幫助。 :) – user1540127 2012-07-26 16:10:52