我正在使用 PostgreSQL 9.2。
我有一个表格,其中包含一些设备停止服务的时间。
+----------+----------+---------------------+
| event_id | device | time |
+----------+----------+---------------------+
| 1 | Switch4 | 2013-09-01 00:01:00 |
| 2 | Switch1 | 2013-09-01 00:02:30 |
| 3 | Switch10 | 2013-09-01 00:02:40 |
| 4 | Switch51 | 2013-09-01 03:05:00 |
| 5 | Switch49 | 2013-09-02 13:00:00 |
| 6 | Switch28 | 2013-09-02 13:01:00 |
| 7 | Switch9 | 2013-09-02 13:02:00 |
+----------+----------+---------------------+
我希望按 +/-3 分钟的时差对行进行分组,如下所示:
+----------+----------+---------------------+--------+
| event_id | device | time | group |
+----------+----------+---------------------+--------+
| 1 | Switch4 | 2013-09-01 00:01:00 | 1 |
| 2 | Switch1 | 2013-09-01 00:02:30 | 1 |
| 3 | Switch10 | 2013-09-01 00:02:40 | 1 |
| 4 | Switch51 | 2013-09-01 03:05:00 | 2 |
| 5 | Switch49 | 2013-09-02 13:00:00 | 3 |
| 6 | Switch28 | 2013-09-02 13:01:00 | 3 |
| 7 | Switch9 | 2013-09-02 13:02:00 | 3 |
+----------+----------+---------------------+--------+
我尝试使用窗口函数来制作它,但是在子句中
[ 范围 | ROWS ] 在 frame_start 和 frame_end 之间,其中 frame_start 和 frame_end 可以是 UNBOUNDED PRECEDING 值 PRECEDING CURRENT ROW value FOLLOWING UNBOUNDED FOLLOWING 之一,
value 必须是不包含任何变量、聚合函数或窗口函数的整数表达式
因此,考虑到这一点,我无法指出时间间隔。现在我怀疑窗口功能可以解决我的问题。你可以帮帮我吗?