MySQL средняя двухуровневая агрегация

0

Предположим, у меня есть таблица с четырьмя полями в 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
  • 1
    Где твой запрос ??? Как вы рассчитываете на помощь, если не дать информацию ???
  • 0
    Для данной информации мой ответ - агрегировать, а затем агрегировать снова.
Показать ещё 2 комментария
Теги:
group-by
average

1 ответ

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

Вы можете просто поставить свой первый запрос в подзапрос.

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

Ещё вопросы

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