Как выполнить AVG(column), последних по дате n значений поля column - MySQL

Узнай цену своей работы

Формулировка задачи:

Задача: выбрать последние по дате 5 значений поля sum, и агрегировать их. Делаю запрос:
select sum from table
where name='name1'
order by date desc limit 5;
Получается 5 записей, можно ли в этом же запросе применить AVG(sum), при этом чтобы агрегировались последние по дате 5 значений поля summ, или как-то без limit можно сделать?

Решение задачи: «Как выполнить AVG(column), последних по дате n значений поля column»

textual
Листинг программы
select AVG(`fields`.`sum`) from (
 select `sum` from `table` 
 where `name`='name1'
 order by `date` DESC 
 limit 5
) as `fields`;

Объяснение кода листинга программы

В представленном коде выполняется следующая последовательность действий:

  1. Внутренний запрос (подзапрос) выбирает поле sum из таблицы table, где имя поля name равно 'name1'. Результат этого запроса сохраняется в переменную fields.
  2. Внешний запрос выбирает среднее значение (AVG) поля sum из переменной fields.
  3. Результатом выполнения всего запроса будет одна строка с одним значением — средним значением поля sum для последних пяти записей с именем 'name1' в таблице table, отсортированных по дате в порядке убывания.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.167 из 5
Похожие ответы