HAVING в SQL: как фильтровать группы после GROUP BY
Конспект статьи. Автор оригинала: Анастасия Саврова (Skillfactory)
WHERE отбирает строки до группировки, HAVING проверяет результаты агрегации.
Порядок
GROUP BY собирает группы → агрегатные функции считают значения → HAVING оставляет подходящие группы. Порядок конструкций: SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY.
SELECT city, AVG(price) AS avg_price
FROM hotels
WHERE is_active = TRUE
GROUP BY city
HAVING AVG(price) > 5000;
Приёмы
- COUNT(*) считает все строки, COUNT(столбец) пропускает NULL.
- Агрегат в WHERE — ошибка: групп ещё нет.
- Условия комбинируются через AND, OR, NOT, BETWEEN.
- При группировке по нескольким столбцам группа — это сочетание их значений.
-- клиенты, у которых больше одного доставленного заказа
SELECT customer_id, COUNT(delivery_date) AS delivered_cnt
FROM orders
GROUP BY customer_id
HAVING COUNT(delivery_date) > 1;
Источник: HAVING в SQL: как фильтровать группы после GROUP BY
Автор: Анастасия Саврова (Skillfactory)
Это конспект, пересказ основных идей. Полный текст, иллюстрации и примеры читайте в оригинальной статье.
Автор: Анастасия Саврова (Skillfactory)
Это конспект, пересказ основных идей. Полный текст, иллюстрации и примеры читайте в оригинальной статье.