Создать значение столбца на основе предыдущих строк - PullRequest
0 голосов
/ 18 мая 2018

В таблице, отсортированной по времени, времени и значению, я хочу добавить столбец с именем Keep, в котором указывается, какую строку сохранять.Столбец хранения равен 0 или 1 для каждой строки.

Критерии для сохранения строки:

  1. Если время между каждой строкой и предыдущей строкой больше 5 минут, сохраните эту строку;если текущая строка имеет значение, отличное от предыдущего, сохраните эту строку.(keep = 1)

  2. Если время между предыдущей строкой и этой строкой меньше 5 минут, а значение одинаковое, отметьте его 0 для столбца хранения.Следующая строка не будет использовать текущую строку для вычисления разницы во времени, она будет использовать предыдущую строку.

Пример с выводом:

+--------+-------+------+
|  Time  | Value | Keep |
+--------+-------+------+
| 11:34  |   150 |    1 |
| 11:35  |   150 |    0 |
| 11:40  |   150 |    1 |
| 11:40  |   151 |    1 |
| 11:41  |   151 |    0 |
| 11:43  |   152 |    1 |
| 11:44  |   152 |    0 |
| 11:50  |   152 |    1 |
+--------+-------+------+

1 Ответ

0 голосов
/ 18 мая 2018

Один метод использует коррелированный подзапрос:

select t.*,
       (exists (select 1
                from t t2
                where t2.time < t.time and t2.time >= t.time - interval 5 minute and
                      t2.value = t.value
       ) as keep
from t;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...