【发布时间】:2018-08-09 19:52:20
【问题描述】:
我是 psql 窗口函数的新手,我想对 test_table 执行查询,以便找出每个 mobile_id、country 和 @987654324 的非活动中断实例@ 以及中断的持续时间(以秒为单位)。
应将每次中断视为一个单独的事件,换句话说,当按时间排序时,active 行的出现应重置计数。
如果只有一个独立的“非活动”记录,则不能有 difftime,这些情况应分配默认值 60。
例如:
> test_table
mobile_id state country brand time
1 1a inactive dk nokia 2018-08-09 19:01:53
2 1a inactive dk nokia 2018-08-09 18:51:39
3 1a active dk nokia 2018-08-09 18:42:10
4 1a inactive dk nokia 2018-08-09 18:31:23
5 1a inactive dk nokia 2018-08-09 18:21:27
6 2a active dk apple 2018-08-09 18:12:08
7 2a active dk apple 2018-08-09 18:01:45
8 2a active dk apple 2018-08-09 17:51:29
9 2a active dk apple 2018-08-09 17:41:27
10 2a inactive dk apple 2018-08-09 17:31:32
11 3a active de nokia 2018-08-09 17:21:34
12 3a active de nokia 2018-08-09 17:11:48
13 3a active de nokia 2018-08-09 17:01:46
14 3a active de nokia 2018-08-09 16:51:31
15 3a active de nokia 2018-08-09 16:41:34
查询test_table 会产生如下结果:
> outages
id country brand diff_time
1 1 dk nokia 614
2 2 dk nokia 596
3 3 dk apple 60
如何构建这样的查询?
【问题讨论】:
标签: sql postgresql psql window-functions