2015-01-14 4 views
0

У меня в настоящее время есть две таблицы в mysql, которые собирают данные. Каждый собирает каждые 3 часа, а другой каждые 15 минут. Я пытаюсь создать прогноз, используя эти данные, используя методы машинного обучения, которые требуют, чтобы данные имели один и тот же интервал времени.MySQL - Средние значения данных за каждые 3 часа?

Мой вопрос: как я могу получить среднее значение каждые 3 часа из обеих таблиц в новую таблицу, которая организует их по дате и часу? Таким образом, из формата, как:

Даты/часа/Таблица 1 3-часовой средней/Таблицы 2 3-часовой среднего

В таблице 1 (каждый 3 часа): даты и времени (временная метка)/уровень (двойной)

Таблица 2 (каждые 15 минут): DateTime (метка времени)/значение (двойной)

мне удалось создать таблицу, которая дает мне в среднем в день, но я предпочел бы что-то более точное!

Это заявление я уже получил за среднесуточных:

SELECT DAY(`datetime`), 
AVG(`level`) AS `Table 1 Average` , 
(SELECT AVG(`value`) AS `Table 2 Daily Average` 
FROM `table2` 
WHERE DAY(`datetime`) = DAY(table1.datetime) 
GROUP BY DAY(`datetime`)) 
FROM `table1` GROUP BY DAY(`datetime`); 

Спасибо!

ответ

0

Вам действительно просто нужно изменить подзапрос. Я думаю, что это может сделать так, как вы хотите:

SELECT t1.*, 
     SELECT AVG(t2.`value`) 
     FROM `table2` 
     WHERE t2.datetime <= t1.datime and 
       t2.datetime >= date_sub(t1.datetime, interval 3 hour) 
     ) as t2_moving_average 
FROM `table1` t1; 
+0

Извините, если я глуп - этот запрос дал мне то же самое значение каждые 3 часа? – Niamh

+0

Я нахожу это удивительным. Это должно занимать временные рамки относительно каждой записи в 'table1'. –

Смежные вопросы