1
我有一個像下面的MySQL +持續時間根據狀況
----------------------------------------------------
| NodeID | Status | Time |
----------------------------------------------------
| 101 | Up |2016-04-27 10:00:35 |
----------------------------------------------------
| 101 | Down |2016-04-27 10:43:12 |
----------------------------------------------------
| 101 | Up |2016-04-27 11:05:48 |
----------------------------------------------------
| 156 | Up |2016-04-27 08:17:10 |
----------------------------------------------------
| 156 | Up |2016-04-27 08:56:30 |
----------------------------------------------------
| 156 | Down |2016-04-27 09:06:12 |
----------------------------------------------------
我試圖讓可用性(時間%時,每一個應用程序是向上)的數據集。 該表不能有自動增量字段,因爲記錄將使用計劃作業連續刪除。
我用行號和自我試圖加入讓旁邊記錄作爲時間差爲每行:
SELECT A.NodeId, A.Status, TIMESTAMPDIFF(MINUTE,A.time,B.time) AS timedifference
FROM (
SELECT @row_number:[email protected]_number+1 AS row_number,nodeId, status, time FROM sw_node_status,
(SELECT @row_number:=0) AS t) as A
INNER JOIN
(
SELECT @row_number:[email protected]_number+1 AS row_number,nodeId, status, time FROM sw_node_status,
(SELECT @row_number:=0) AS t
) as B ON B.row_number = (A.row_number + 1)
ORDER BY A.NodeId ASC
但需要較長的時間來運行,給我回來只有一個記錄。 預期結果將是爲:
| NodeID | Status | Time | Duration (mins
----------------------------------------------------------------
| 101 | Up |2016-04-27 10:00:35 | 43
----------------------------------------------------------------
| 101 | Down |2016-04-27 10:43:12 | 23
----------------------------------------------------------------
| 101 | Up |2016-04-27 11:05:48 | 0
----------------------------------------------------------------
| 156 | Up |2016-04-27 08:17:10 | 39
----------------------------------------------------------------
| 156 | Up |2016-04-27 08:56:30 | 10
----------------------------------------------------------------
| 156 | Down |2016-04-27 09:06:12 | 0
----------------------------------------------------------------
什麼可以預期在給定的例子輸出? – Utsav