Урок доступен в видеоформате
Агрегатные функции
В статье о группировках мы обсудили, что при использовании оператора GROUP BY мы можем использовать агрегатные функции. Давайте поговорим о них подробнее 🐳.
Общая структура запроса с агрегатной функцией
MySQL 8.4
SELECT { литерал | агрегатная_функция | поле_группировки } [, ...]
FROM имя_таблицы
GROUP BY поле_группировки [, ...];- [ ]необязательная часть
- { a | b }один из вариантов
- ...можно повторить
- литерал
Фиксированное значение, например 'text' или 1. Оно одинаково для всех групп.
- агрегатная_функция
Функция, которая считает одно значение по всем строкам группы, например AVG(price).
- поле_группировки
Столбец, по которому строки делятся на группы: строки с одинаковым значением попадают в одну группу. Можно указать несколько столбцов через запятую.
- имя_таблицы
- Таблица, строки которой группируются.
Например, запрос с использованием агрегатной функции AVG может выглядеть так:
MySQL 8.4SELECT home_type, AVG(price) as avg_price FROM Rooms GROUP BY home_type
Описание агрегатных функций
Примеры
-
Найдём количество каждого вида жилья и отсортируем полученный список по убыванию:
MySQL 8.4SELECT home_type, COUNT(*) as amount FROM Rooms GROUP BY home_type ORDER BY amount DESC -
Для каждого жилого помещения найдём самую позднюю дату выезда (поле end_date)
MySQL 8.4SELECT room_id, MAX(end_date) AS last_end_date FROM Reservations GROUP BY room_id