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 ] BETWEEN frame_start AND frame_end、ここで、frame_start と frame_end は UNBOUNDED PRECEDING 値 PRECEDING CURRENT ROW 値 FOLLOWING UNBOUNDED FOLLOWING のいずれかです。
値は、変数、集約関数、またはウィンドウ関数を含まない整数式でなければなりません
したがって、これを考慮すると、時間間隔を示すことはできません。今、ウィンドウ関数が私の問題を解決できるとは思えません。私たちを手伝ってくれますか?