У меня показания с метра (volkszaehler). Они хранятся в таблице, называемой данными. Они разделены на каналы (я использую три из них), каждому назначен channel_id. Измеритель группирует измерения всех каналов в один пакет, но каждой записи присваивается метка времени точного момента, когда она пришла. Это приводит к тому, что записи из одного и того же пакета передачи отличаются приблизительно на 150 мс. Всплески приходят каждые 2 секунды. Я хотел бы назначить всем значениям из одного пакета одну и ту же метку времени. Мне удалось сделать это для отдельного пакета, используя
update data set timestamp = 1588000380747 where timestamp > 1588000380747 and timestamp < 1588000380747+200;
Но я только сегодня начал SQL и не знаю, как это сделать для всей таблицы. Я хотел бы выбрать один из каналов для предоставления эталонной отметки времени
edit: пример данных:
MariaDB [volkszaehler]> select channel_id,timestamp from data where timestamp>1588450394946 and timestamp <1588450402946 order by timestamp;
+------------+---------------+
| channel_id | timestamp |
+------------+---------------+
| 3 | 1588450396788 |
| 4 | 1588450396827 |
| 2 | 1588450396946 |
| 3 | 1588450398788 |
| 4 | 1588450398827 |
| 2 | 1588450398946 |
| 3 | 1588450400788 |
| 4 | 1588450400827 |
| 2 | 1588450400946 |
требуемые результаты:
+------------+---------------+
| channel_id | timestamp |
+------------+---------------+
| 3 | 1588450396946 |
| 4 | 1588450396946 |
| 2 | 1588450396946 |
| 3 | 1588450398946 |
| 4 | 1588450398946 |
| 2 | 1588450398946 |
| 3 | 1588450400946 |
| 4 | 1588450400946 |
| 2 | 1588450400946 |
Версия: Server версия: 10.3.22-MariaDB-0 + deb10u1 Raspbian 10