我有一個表與結構SQL查詢:基於複雜的業務邏輯
id, timestamp, deviceId, datatype, measure
柱度量的值表示的數據類型的值。例如,當處理開始時,數據類型是19並且是度量1.當數據類型完成時,數據類型仍然是19,其值爲0,並且新行插入具有相同時間戳,數據類型54和值作爲某個值。這意味着系統在完成時調用某個觸發器來更新此表。下面
1001, 2013-01-02 09:20:00, 501, 19, 1
1005, 2013-01-02 10:00:00, 501, 19, 0
1006, 2013-01-02 10:00:00, 501, 54, 65
時間戳的1005 & 1006是相同的數據。例如,1001時間戳總是比的1005
1011, 2013-01-02 09:20:00, 601, 19, 1
1015, 2013-01-02 10:00:00, 601, 19, 0
1016, 2013-01-02 10:00:00, 601, 54, 105
時間戳的1015 & 1016是相同更少,1011時間戳總是小於即1015
1021, 2013-01-02 09:20:00, 701, 19, 1
1022, 2013-01-02 10:00:00, 701, 19, 0
1023, 2013-01-02 10:00:00, 701, 54, 81
時間戳的1022 & 1023一樣,1021時間戳總是小於比1022
對於多個設備可以同時發生同樣的過程。
現在的要求是找到的開始和結束時間,每完成交易就像
1006, 2013-01-02 09:20:00, 2013-01-02 10:20:00, 501, 65
1016, 2013-01-02 09:20:00, 2013-01-02 10:20:00, 601, 105
1023, 2013-01-02 09:20:00, 2013-01-02 10:20:00, 701, 81
我經過約5年,完全被卡住編寫SQL查詢。任何指針/建議將不勝感激。
在此先感謝
如何識別每個「交易」?這隻能通過檢查deviceId來實現嗎?每臺設備是否只能同時進行一項交易? – Flimzy
每個完成的事務由數據類型54標識,如果數據類型54存在,則必須分別具有數據類型19值1和0的開始和結束時間。是的,每個設備一次只能有一個事務。同一臺設備可以在一天中進行多次交易。 – Atique
是否每個事務都以'19開始,並以最高編號的數據類型結束? IOW:只需查看數據類型,在訂購{通過device_id,timestamp,id}時是否可以使用「鋸齒」檢測器?如果每層只有一條記錄,會發生什麼情況?如果層中有同一個{device_id,datatype}的多條記錄,會發生什麼情況?順便說一句:主鍵有幫助。 – wildplasser