最近我碰到一個要求來到了我有我的源表一樣,安裝在設備差的機器SQL Server查詢來獲得繼續OCCURENCES
Machine_Name| Time | Alarm
------------|---------------------|---------
Mac1 | 2016-11-22 05:15 | 0
Mac1 | 2016-11-22 05:30 | 1
Mac1 | 2016-11-22 05:45 | 1
Mac1 | 2016-11-22 06:00 | 0
Mac1 | 2016-11-22 06:15 | 1
Mac1 | 2016-11-22 06:30 | 1
Mac1 | 2016-11-22 06:45 | 1
Mac1 | 2016-11-22 07:00 | 1
Mac1 | 2016-11-22 07:15 | 1
Mac1 | 2016-11-22 07:30 | 1
Mac2 | 2016-11-22 05:15 | 0
Mac2 | 2016-11-22 05:30 | 0
Mac2 | 2016-11-22 05:45 | 1
Mac2 | 2016-11-22 06:00 | 1
Mac2 | 2016-11-22 06:15 | 1
Mac2 | 2016-11-22 06:30 | 1
Mac2 | 2016-11-22 06:45 | 0
Mac2 | 2016-11-22 07:00 | 1
以上表存儲信息以及對「問題警報」狀態每個時期(每15分鐘一次)。
現在我需要計算這個報警的相關性。對於任何單個報警,相關性爲25%。如果機器連續4個週期(1小時)發出警報,則會將最大相關性歸檔爲100%。
如果連續超過4個連續週期(1小時)發生報警,則相關性保持100%。
預期的結果從上面的源表如下設置,
Machine_Name| Time | Alarm | Alert_Relevancy(%)
------------|---------------------|---------|---------------
Mac1 | 2016-11-22 05:15 | 0 | 0
Mac1 | 2016-11-22 05:30 | 1 | 25
Mac1 | 2016-11-22 05:45 | 1 | 50
Mac1 | 2016-11-22 06:00 | 0 | 0
Mac1 | 2016-11-22 06:15 | 1 | 25
Mac1 | 2016-11-22 06:30 | 1 | 50
Mac1 | 2016-11-22 06:45 | 1 | 75
Mac1 | 2016-11-22 07:00 | 1 | 100
Mac1 | 2016-11-22 07:15 | 1 | 100
Mac1 | 2016-11-22 07:30 | 1 | 100
Mac2 | 2016-11-22 05:15 | 0 | 0
Mac2 | 2016-11-22 05:30 | 0 | 0
Mac2 | 2016-11-22 05:45 | 1 | 25
Mac2 | 2016-11-22 06:00 | 1 | 50
Mac2 | 2016-11-22 06:15 | 1 | 75
Mac2 | 2016-11-22 06:30 | 1 | 100
Mac2 | 2016-11-22 06:45 | 0 | 0
Mac2 | 2016-11-22 07:00 | 1 | 25
這將是巨大的,如果我還可以得到一個查詢,只選擇那些報警器系列在那裏最低4不斷提高次(相關性達到100)。
預期的第二個結果集如下,我是否已經刪除了任何連續至少4次不是1的報警系列。
Machine_Name| Time | Alarm | Alert_Relevancy(%)
------------|---------------------|---------|---------------
Mac1 | 2016-11-22 06:15 | 1 | 25
Mac1 | 2016-11-22 06:30 | 1 | 50
Mac1 | 2016-11-22 06:45 | 1 | 75
Mac1 | 2016-11-22 07:00 | 1 | 100
Mac1 | 2016-11-22 07:15 | 1 | 100
Mac1 | 2016-11-22 07:30 | 1 | 100
Mac2 | 2016-11-22 05:45 | 1 | 25
Mac2 | 2016-11-22 06:00 | 1 | 50
Mac2 | 2016-11-22 06:15 | 1 | 75
Mac2 | 2016-11-22 06:30 | 1 | 100
在此先感謝您的建議/查詢樣本。
問候, RON
什麼DBMS?如果MSSQL 2012+可以使用滯後和主導函數,如果沒有,則可以使用CTE。編輯:假設你是從你以前的問題.. – Matt
你剛剛選擇了一個解決方案,通過一套基於解決方案的記錄記錄。 –
嗨Mortb,對不起,我沒有包括我第一次嘗試的內容。我的錯。我嘗試了CTE方法,但由於我的定位記錄設置錯誤,無法達到確切的結果。但後來LukStorms發佈了我正在尋找的確切解決方案。我會確保我在問題中包含問題片段。謝謝。 –