【发布时间】:2014-04-02 14:31:37
【问题描述】:
我有一张记录实体每一次状态变化的表格
id recordTime Status
ID1 2014-03-01 11:33:00 Disconnected
ID1 2014-03-01 12:13:00 Connected
ID2 2014-03-01 12:21:00 Connected
ID1 2014-03-01 12:24:00 Disconnected
ID1 2014-03-01 12:29:00 Connected
ID2 2014-03-01 12:40:00 Disconnected
ID2 2014-03-01 13:03:00 Connected
ID2 2014-03-01 13:13:00 Disconnected
ID2 2014-03-01 13:29:00 Connected
ID1 2014-03-01 13:30:00 Disconnected
我需要计算给定时间窗口内每个 ID 的总非活动时间,即“已连接”和上次“已断开”状态之间的时间。
对于上表和 2014-03-01 11:00:00 到 2014-03-01 14:00:00 的时间范围,输出应为:
ID InactiveTime
ID1 01:15:00
ID2 02:00:00
【问题讨论】:
-
你确定你想要的输出吗?
-
是否保证任何给定
id的下一行具有相反的状态? -
@Houari:如果考虑给定的时间范围
2014-03-01 11:00:00 to 2014-03-01 14:00:00,输出是正确的。 -
@Erwin,是的,每个条目的状态肯定会切换。
-
@ErwinBrandstetter 我明白了 :)
标签: sql postgresql aggregate-functions window-functions