我在一个表中有数据,该表是服务器活动的日志数据。这是它的样子(# 列不是数据库或输出的一部分,但可以在下面的注释中引用该数据):
# | DateStamp | Server
- | ------------------- | ---------
1 | 2016-12-01 03:15:19 | Server 1
2 | 2016-12-01 03:17:19 | Server 2
3 | 2016-12-01 03:17:24 | Server 2
4 | 2016-12-01 03:18:01 | Server 1
5 | 2016-12-01 03:18:07 | Server 3
6 | 2016-12-01 04:01:03 | Server 3
7 | 2016-12-01 07:18:47 | Server 1
8 | 2016-12-01 07:19:23 | Server 1
9 | 2016-12-01 09:19:39 | Server 2
10| 2016-12-01 11:19:54 | Server 3
我想写一个查询输出:
# | Server | Online | Offline
- | -------- | ------------------- | -------------------
1 | Server 1 | 2016-12-01 03:15:19 | 2016-12-01 03:18:01
2 | Server 2 | 2016-12-01 03:17:19 | 2016-12-01 03:17:24
3 | Server 3 | 2016-12-01 03:18:07 | 2016-12-01 03:18:07
4 | Server 1 | 2016-12-01 07:18:47 | 2016-12-01 07:19:23
5 | Server 2 | 2016-12-01 09:19:39 | 2016-12-01 09:19:39
6 | Server 3 | 2016-12-01 11:19:54 | (still online)
笔记:
- 这基本上是这些服务器何时“活跃”以及持续多长时间的统计。
- 如果下一个服务器的活动相隔超过一个小时,则认为它是一个新会话并获得一个新行。(即输出的第 1 行和第 4 行,基于上面的第 4 行和第 7 行数据)
- 澄清:输出的第 1 行决定 03:18:01 为“离线”,因为服务器 1 的下一个条目(数据第 7 行的 07:18:47)是一个多小时后。
- 输出的第 5 行显示脱机,因为一个多小时过去了,服务器 2 没有新条目出现
我很想知道如何查询这个,并根据上面的输出和注释对我的结果进行分组。如果您需要更多信息来提出解决方案,请告诉我。