Как выполнить AVG(column), последних по дате n значений поля column - MySQL
Формулировка задачи:
Задача: выбрать последние по дате 5 значений поля sum, и агрегировать их.
Делаю запрос:
Получается 5 записей, можно ли в этом же запросе применить AVG(sum), при этом чтобы агрегировались последние по дате 5 значений поля summ, или как-то без limit можно сделать?
select sum from table where name='name1' order by date desc limit 5;
Решение задачи: «Как выполнить 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`;
Объяснение кода листинга программы
В представленном коде выполняется следующая последовательность действий:
- Внутренний запрос (подзапрос) выбирает поле
sum
из таблицыtable
, где имя поляname
равно 'name1'. Результат этого запроса сохраняется в переменнуюfields
. - Внешний запрос выбирает среднее значение (
AVG
) поляsum
из переменнойfields
. - Результатом выполнения всего запроса будет одна строка с одним значением — средним значением поля
sum
для последних пяти записей с именем 'name1' в таблицеtable
, отсортированных по дате в порядке убывания.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д