Я пытаюсь создать график, который показывает энергопотребление за каждый час в течение дня. Мое устройство отправляет данные каждые 15 минут на мой сервер, и предыдущий power_kwh всегда равен или больше текущего значения power_kwh в sensor_id. В некоторых случаях у меня может быть два или более измерителя мощности для одного здания, поэтому мне нужно подумать о комбинировании значений с одинаковыми периодами. Поэтому я хочу получить две строки для каждого часа с первым и последним значением с помощью в предложении, содержащем значения sensor_id. Поэтому я есть таблица со значениями: date, power_kwh, sensor_id mytable
После некоторого поиска inte rnet, и я нашел запрос, который хорош, но проблемы с sensor_id
SELECT
DATE,
power_kwh,
sensor_id
FROM
sensor_data
WHERE
(HOUR(DATE), MINUTE(DATE)) IN(
SELECT
HOUR(DATE),
MIN(MINUTE(DATE))
FROM
sensor_data
GROUP BY
HOUR(DATE)
)
UNION
SELECT
DATE,
power_kwh,
sensor_id
FROM
sensor_data
WHERE
(HOUR(DATE), MINUTE(DATE)) IN(
SELECT
HOUR(DATE),
MAX(MINUTE(DATE))
FROM
sensor_data
GROUP BY
HOUR(DATE)
);
My current result
+----------------------------+-----------+-----------+
| date | power_kwh | sensor_id |
+----------------------------+-----------+-----------+
| 2020-03-12 15:40:03.000000 | 682685.56 | 4 |
| 2020-03-12 15:59:03.000000 | 682688.44 | 5 |
| 2020-03-12 16:00:03.000000 | 682688.56 | 5 |
| 2020-03-12 16:59:06.000000 | 682697.44 | 5 |
| 2020-03-12 17:00:06.000000 | 682697.56 | 5 |
| 2020-03-12 17:59:08.000000 | 682706.44 | 5 |
| 2020-03-12 18:00:08.000000 | 682706.56 | 5 |
| 2020-03-12 18:59:11.000000 | 682715.44 | 5 |
| 2020-03-12 19:00:11.000000 | 682715.56 | 5 |
| 2020-03-12 19:59:13.000000 | 682724.44 | 5 |
| 2020-03-12 20:00:13.000000 | 682724.56 | 5 |
| 2020-03-12 20:59:16.000000 | 682733.44 | 5 |
My expected result
+----------------------------+-----------+-----------+
| date | power_kwh | sensor_id |
+----------------------------+-----------+-----------+
| 2020-03-12 15:40:03.000000 | 153566.34 | 4 |
| 2020-03-12 15:59:03.000000 | 153575.44 | 4 |
| 2020-03-12 15:00:02.000000 | 682688.56 | 5 |
| 2020-03-12 15:58:06.000000 | 682697.44 | 5 |
| 2020-03-12 16:00:06.000000 | 153576.23 | 4 |
| 2020-03-12 16:59:08.000000 | 153585.44 | 4 |
| 2020-03-12 16:02:08.000000 | 682706.56 | 5 |
| 2020-03-12 16:59:11.000000 | 682715.44 | 5 |
Моя sql версия
mysql Ver 8.0.19 for osx10.14 on x86_64 (Homebrew)
И еще одна вещь, я думаю о скорости и других вещах, поэтому, если нет решения, можете ли вы дать мне совет по обработке в Java Весна Дайте мне знать, если вам, ребята, нужна дополнительная информация. Спасибо !!!