MySQL среднее значение каждого часа за последние 30 дней - PullRequest
0 голосов
/ 14 июля 2020

У меня есть таблица, которая обновляется каждую минуту, и мне нужно рассчитать среднее значение каждого часа для значений за последние 30 дней.

Timestamp            | SB1_AC_GES_DIFF
2020-07-14 15:13:04     30
2020-07-14 15:12:07     27
...                     ...

Я хочу сохранить результаты в вторая таблица с именем avgTable, как это

Timestamp            | AVG_SB1
15:00                  29
16:00                  32
...                    ...

Было бы идеально, если бы таблица могла обновляться один раз в день, возможно, когда сейчас 12 часов, и часть даты для дня меняется.

Ответы [ 2 ]

1 голос
/ 14 июля 2020

Вы можете попробовать:

INSERT INTO avg_table 
SELECT Date_format(Timestamp, "%h:00:00") AS HourlyTimeStamp, 
       Avg(sb1_ac_ges_diff) AS "AVG_SB1" 
FROM   table
WHERE Timestamp between DATEADD(DAY, -30, GETDATE()) AND GETDATE()
GROUP BY 1

Предполагая, что вам нужно среднее скользящее среднее, агности c дня.

0 голосов
/ 14 июля 2020

Вы можете просто использовать функцию hour():

select hour(timestamp) as hh, avg(sb1_ac_ges_diff)
from t
group by hh;

Вы можете преобразовать это в строку или время, если хотите, но мне это не кажется полезным.

Если вам действительно нужен час для каждого дня, тогда:

select date(timestamp) as dd, hour(timestamp) as hh, avg(sb1_ac_ges_diff)
from t
group by dd, hh;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...