Понимание предложения HAVING в SQL: использование и примеры

Предложение HAVINGиспользуется в запросах SQL, особенно в сочетании с предложением GROUP BY, для фильтрации результатов запроса на основе условия, применимого к группам. рядов. Оно похоже на предложение WHERE, но работает с агрегированными данными.

Основная цель предложения HAVING— фильтровать набор результатов после применения предложения GROUP BY. Он позволяет указывать условия, включающие агрегатные функции или сгруппированные столбцы. В окончательный результат будут включены только группы, удовлетворяющие условию.

Вот пример, иллюстрирующий использование предложения HAVING:

Предположим, у вас есть таблица с именем ordersсо столбцами customer_idи total_price. Вы хотите найти клиентов, которые разместили заказы на общую сумму более 500 долларов США.

SELECT customer_id, SUM(total_price) AS total_spent
FROM orders
GROUP BY customer_id
HAVING SUM(total_price) > 500;

В этом примере предложение GROUP BYгруппирует строки по customer_id, а предложение HAVINGфильтрует группы, чтобы включить только те, у которых есть SUM(total_price)больше 500. Результатом будет список клиентов, которые в общей сложности потратили более 500 долларов США.

Вот несколько дополнительных примеров использования предложения HAVING:

Пример 1. Найдите отделы, в которых работает более пяти сотрудников:

SELECT department, COUNT(*) AS employee_count
FROM employees
GROUP BY department
HAVING COUNT(*) > 5;

Пример 2. Найдите клиентов, совершивших более трех покупок:

SELECT customer_id, COUNT(*) AS purchase_count
FROM orders
GROUP BY customer_id
HAVING COUNT(*) > 3;

Пример 3. Найдите товары со средним рейтингом выше 4,5:

SELECT product_id, AVG(rating) AS average_rating
FROM reviews
GROUP BY product_id
HAVING AVG(rating) > 4.5;