Я использую 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 |
+----------+----------+---------------------+--------+
Я пытался сделать это с помощью функции окна, но в пункте
[RANGE | ЧСТРОК] МЕЖДУ frame_start И frame_end, , где frame_start и frame_end могут быть одним из НЕОГРАНИЧЕННЫХ предшествующего значения ПРЕДЫДУЩЕГО текущего значения ROW СЛЕДУЮЩЕГО НЕОГРАНИЧЕННЫХ СЛЕДУЮЩИХ,
значения должно быть целым число выражения не содержащее какие-либо переменными, агрегатных функций, или окно функции
Итак, учитывая это, я не могу указать временной интервал. Теперь я сомневаюсь, что функция окна может решить мою проблему. Не могли бы вы помочь мне?
Для уточнения вопроса, если у вас есть строка с временем = '00: 03: 40 'в приведенном выше примере, будет ли он иметь номер группы 2, а другие группы сдвинутся на +1? Попытка понять, что вы подразумеваете под +/- 3 минутой разницы –