В нашей базе данных есть таблица, которая отслеживает энергопотребление устройства. Скорость, с которой вставлены новые значения, не фиксирована, они записываются только в том случае, когда действительно происходит изменение, поэтому временное расстояние между значениями изменяется и может достигать от 1 секунды до нескольких минут. Записи состоят из метки времени и значения. Значение всегда увеличивается с каждой новой строкой, когда она подсчитывает кВтч.
Я хочу достичь следующего: я хочу указать начало и конец datetime, допустим, месяц. Я также хочу указать интервал, как 15 минут, 1 час, 1 день или аналогичный. Результат, который мне нужно получить, представлен в виде [Начало интервала как дата-время], [потребление энергии в этом интервале], например. (где интервал будет установлен в 1 час):
2015-01.01 08:00:00 - 65
2015-01.01 09:00:00 - 43
2015-01.01 10:00:00 - 56
Это выглядит так:
TimeStamp Value
-------------------------
2015-01-08 08:29:47, 5246
2015-01-08 08:36:15, 5247
2015-01-08 08:37:10, 5248
2015-01-08 08:38:01, 5249
2015-01-08 08:38:38, 5250
2015-01-08 08:38:51, 5251
2015-01-08 08:39:33, 5252
2015-01-08 08:40:20, 5253
2015-01-08 08:41:10, 5254
2015-01-09 08:56:25, 5255
2015-01-09 08:56:43, 5256
2015-01-09 08:57:31, 5257
2015-01-09 08:57:36, 5258
2015-01-09 08:58:02, 5259
2015-01-09 08:58:57, 5260
2015-01-09 08:59:27, 5261
2015-01-09 09:00:06, 5262
2015-01-09 09:00:59, 5263
2015-01-09 09:01:54, 5265
2015-01-09 09:02:44, 5266
2015-01-09 09:03:39, 5267
2015-01-09 09:04:22, 5268
2015-01-09 09:05:11, 5269
2015-01-09 09:06:08, 5270
У меня такое ощущение, что мне придется объединить функцию SUM()
с GROUP BY
, но я не знаю, как это сделать, потому что, насколько я вижу, мне также нужно будет учитывать только рост за интервал, а не сумму абсолютных значений в этом интервале. Было бы здорово, если бы кто-то смог привести меня на правильный путь.