Сделайте среднее значение для интервалов времени mysql

0

У меня есть эта таблица:

'Telegramas' ('Id', 'Fecha', 'Valor_Dispositivo') VALUES
(1, '2017-12-14 11:06:01.6976', '5'),
(2, '2017-12-14 11:07:01.4561', '2'),
(3, '2017-12-14 11:08:01.1651', '6'),
(4, '2017-12-14 12:06:01.2146', '1'),
(5, '2017-12-14 12:40:01.7981', '9');

И мне нужен такой выход:

2017-12-14 11:00:00.0000 -> 4.33
2017-12-14 12:00:00.0000 -> 5

Мне нужно сделать среднее число данных с временными интервалами, рассчитанными по столбцу даты каждый час.

Это вопрос, который у меня есть, я очень потерян. Мне нужна помощь.

SELECT TIME(DATE_SUB(Telegramas.Fecha,INTERVAL (MINUTE(Telegramas.Fecha)%20) MINUTE)) as tiempo, SUM(IFNULL(Telegramas.Valor_Dispositivo,0)) as suma FROM Telegramas GROUP BY Fecha ORDER BY Telegramas.ID_Auto DESC;
Теги:
timestamp
average

3 ответа

2
Лучший ответ

Одним из способов может быть извлечение date и hour части из timestamp и группы в результате.

select DATE_ADD(date(fecha), INTERVAL EXTRACT(HOUR FROM fecha) HOUR) as FECHA_DATE_HOUR, 
       avg(Valor_Dispositivo) as Valor_Dispositivo
from Telegramas
group by date(fecha), EXTRACT(HOUR FROM fecha);

Результат:

+---------------------+-------------------+
|   FECHA_DATE_HOUR   | Valor_Dispositivo |
+---------------------+-------------------+
| 14.12.2017 11:00:00 | 4.3333            |
| 14.12.2017 12:00:00 | 5.0000            |
+---------------------+-------------------+

DEMO

1

ПОПРОБУЙТЕ ЭТО: Один простой способ может работать для вас

SELECT CONCAT(DATE(Fecha), ' ', HOUR(Fecha),':00:00.0000') Fecha, 
    AVG(valor_Dispositivo) average
FROM Telegramas
GROUP BY DATE(Fecha), HOUR(Fecha)
1

Я бы использовал функцию DATE_FORMAT и тип преобразования datetime:

DATE_FORMAT(CURRENT_TIMESTAMP, '%Y-%m-%d %H:00:00');

В вашем примере:

SELECT AVG('Valor_Dispositivo'), DATE_FORMAT('Fecha', '%Y-%m-%d %H:00:00') 'by_hour' 
FROM 'Telegramas' 
GROUP BY 2;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню