COUNT, SUM, AVG с GROUP BY и HAVING
До сих пор каждый запрос возвращал строки из таблицы. Теперь зададим итоговые вопросы: сколько заказов оплачено? Сколько денег принёс каждый клиент? Кто заказывал больше одного раза? Это самые частые вопросы на собеседовании после JOIN, и их постоянная ловушка – разница между WHERE и HAVING.
Агрегатная функция превращает много строк в одно число. GROUP BY делает это для каждой группы отдельно, а HAVING фильтрует группы.
- Агрегатная функция
- Функция, которая принимает много строк и возвращает одно значение, например COUNT, SUM или AVG.
- GROUP BY
- Предложение, которое делит строки на группы по общему значению и возвращает одну строку на группу.
- HAVING
- Предложение, которое фильтрует группы после агрегации, например только группы, где больше двух строк.