Предположим, у меня есть таблица с четырьмя полями в MySQL (id, week, day, value). Поле id является идентификатором устройства, которое принимает несколько значений в день.
Я хочу рассчитать среднюю стоимость в неделю-ежедневно. Результатом будет другая таблица с тремя полями (id, week, average_week_day_value), где среднее значение не является средним в неделю, а в неделю-ежедневно. Я имею в виду: сначала мы вычисляем среднесуточный, а затем средний день недели в среднем в среднем по дням в неделю.
Теперь я реализую это в два этапа с промежуточной таблицей (id, week, day, average-day-value). После того, как у меня есть промежуточная таблица, легко вычислить итоговую таблицу: (id, week, average_week_day_value)
Могу ли я сделать это за один шаг?
РЕДАКТИРОВАТЬ
Запрос первого шага:
INSERT INTO daily (id,week,day,average)
SELECT id, week, day, avg(value)
FROM table_values
GROUP BY day
Запрос второго шага:
INSERT INTO weekly (id,week,avg)
SELECT id,week,avg(average)
FROM daily
GROUP BY week
Вы можете просто поставить свой первый запрос в подзапрос.
SELECT week, AVG(day_avg)
FROM (
SELECT week, day, AVG(value) AS day_avg
FROM table_values
GROUP BY week, day
) d
GROUP BY week