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