← К оглавлению занятия
⚡ Минимум для запоминания
WHERE — фильтр строк, без агрегатов.
HAVING — фильтр групп, с агрегатами.
- Порядок: FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT.
Операторы фильтрации
| Оператор | Назначение | Пример |
WHERE | Фильтр строк до группировки | WHERE status = 'active' |
HAVING | Фильтр групп после группировки | HAVING COUNT(*) > 1 |
AND | Объединение условий | HAVING SUM(amount) > 100 AND COUNT(*) > 2 |
OR | Хотя бы одно условие | HAVING MAX(price) < 10 OR MIN(price) > 1000 |
Агрегатные функции
| Функция | Назначение | Пример в HAVING |
COUNT(*) | Количество строк в группе | HAVING COUNT(*) > 2 |
COUNT(column) | Количество не NULL значений | HAVING COUNT(email) > 0 |
SUM(column) | Сумма значений | HAVING SUM(quantity) > 100 |
AVG(column) | Среднее значение | HAVING AVG(score) >= 70 |
MIN(column) | Минимум | HAVING MIN(price) > 0 |
MAX(column) | Максимум | HAVING MAX(price) < 10000 |
Порядок операторов в запросе
SELECT column, aggregate(column)
FROM table
WHERE row_filter
GROUP BY column
HAVING group_filter
ORDER BY column
LIMIT n;
Полный справочник
→ Справочник SQL