Оператор HAVING в SQL
Оператор HAVING применяется для фильтрации строк по значениям агрегатных функций.
Обратите внимание, что оператор HAVING похож на оператор WHERE, но они отличаются друг от друга.
Давайте рассмотрим различия HAVING от WHERE:
- WHERE – сначала выбираются записи по условию, а затем могут быть сгруппированы, отсортированы и т.д
- HAVING – сначала группируются записи, а затем выбираются по условию, при этом, в отличие от WHERE, в нем можно использовать значения агрегатных функций.
Синтаксис оператора HAVING
SELECT поля_таблиц FROM список_таблиц GROUP BY поля_группировки HAVING условие_на_ограничение_строк_после_группировки
Практический пример
Выведем из таблицы Users общую сумму, потраченную на покупки, для каждого пользователя, где общая сумма покупки меньше, чем 3000 рублей.
SELECT user_id, SUM(count_product * unit_price) as 'sum' FROM Users GROUP BY user_id HAVING sum < 3000;