Этот вопрос связан с поста я сделал ранее: MySQL: Calculating Data from Table with One Month OffsetMySQL: Расчет 4 недели Average с 4 недели Offset
Но теперь мне нужно создать процедуру, которая запрашивает таблицу контактных данных, сохраненных на неделю. Вот упрощенный пример таблицы я работаю с:
+-----------------+------------+
| week_start_date | contacts |
+-----------------+------------+
| 2015-03-08 | 12 |
| 2015-03-01 | 20 |
| 2015-02-22 | 5 |
| 2015-02-15 | 17 |
| 2015-02-08 | 8 |
| 2015-02-01 | 2 |
| 2015-01-25 | 16 |
| 2015-01-18 | 10 |
| 2015-01-11 | 4 |
| ... | ... |
+-----------------+------------+
Что мне нужно, чтобы выяснить, как вычислить 4 недели скользящей средней, что также имеет 4 недели смещение на вершине этого. Например, если бы я хотел получить средние контакты за неделю с 8 марта 2015 года, это будет в среднем с 18 января по 8 февраля. В приведенном выше примере мое среднее значение будет: (10 + 16 + 2 + 8)/4 = 9. И если бы я хотел найти среднее значение за неделю с 1 марта 2015 года, тогда было бы среднее значение с 11 января по 1 февраля, которое получилось бы 8, используя приведенную выше таблицу образцов.
С моего последнего поста, я знаю, что я могу справиться с 4 недели смещения путем присоединения к таблице с собой на WEEK_START_DATE похожее на это:
SELECT s1.week_start_date, s2.Total_Contacts
FROM sample_table s1
LEFT JOIN (SELECT week_start_date, sum(contacts) AS Total_Contacts
FROM sample_table
GROUP BY week_start_date) s2
ON s1.week_start_date =
date_add(s2.week_start_date, INTERVAL 4 WEEK)
WHERE s1.week_start_date = '2015-03-08'
GROUP BY s1.week_start_date;
Но получить его, чтобы вычислить среднее четыре недели, а также где я застрял. Я думал, что присоединение к нему на нескольких датах будет работать, но я продолжаю получать средние значения, которые намного больше, чем ожидалось. Я предполагаю, что это связано с тем, как group_start_date сгруппированы. (Обратите внимание, что за каждую неделю может быть несколько записей. Я показываю только одну запись за каждую неделю в таблице примеров, чтобы сделать ее менее загроможденной.)
Входит ли в диапазон дат правильный подход? Или мне нужно добавить другое соединение?
Благодарим за помощь.
Выглядит идеально для меня;) –