【发布时间】:2017-12-06 16:16:09
【问题描述】:
我有一个程序每分钟通过 PING 检查网络中计算机的状态。 每次它都会向 DB 插入一个新行,如下所示(我使用的是 postgresql)
id_status status checking_time(timestamp) id_device(int)
1 OK '2017-01-01 00:00:00' 1
2 OK '2017-01-01 00:00:00' 2
3 OK '2017-01-01 00:00:00' 3
4 Failed '2017-01-01 00:01:00' 1
5 OK '2017-01-01 00:01:00' 2
6 OK '2017-01-01 00:01:00' 3
7 Failed '2017-01-01 00:02:00' 1
8 OK '2017-01-01 00:02:00' 2
9 OK '2017-01-01 00:02:00' 3
10 Failed '2017-01-01 00:03:00' 1
11 OK '2017-01-01 00:03:00' 2
12 OK '2017-01-01 00:03:00' 3
13 OK '2017-01-01 00:04:00' 1
14 OK '2017-01-01 00:04:00' 2
15 OK '2017-01-01 00:04:00' 3
我希望结果如下
status from_time(timestamp) to_time(timestamp) id_device(int)
OK '2017-01-01 00:00:00' '2017-01-01 00:01:00' 1
Failed '2017-01-01 00:01:00' '2017-01-01 00:04:00' 1
OK '2017-01-01 00:04:00' NOW 1
OK '2017-01-01 00:00:00' NOW 2
OK '2017-01-01 00:00:00' NOW 3
我怎样才能得到这个输出?
【问题讨论】:
标签: sql postgresql gaps-and-islands