57. Пример запроса с WHERE и HAVING #
Условие задачи:
📌 Нужно придумать SQL-пример, где одновременно используются WHERE и HAVING, и показать разницу.
Запрос должен быть реалистичным и демонстрировать назначение каждого оператора.
Спойлеры к решению
Подсказки
💡
💡
💡 Хороший пример: выбрать отделы, где работают только активные сотрудники (
WHERE — фильтрует строки до группировки.💡
HAVING — фильтрует группы после GROUP BY.💡 Хороший пример: выбрать отделы, где работают только активные сотрудники (
WHERE), и среди них оставить только те, где средняя зарплата выше 50k (HAVING).Решение
SELECT
department_id,
AVG(salary) AS avg_salary,
COUNT(*) AS emp_count
FROM employees
WHERE status = 'ACTIVE' -- фильтрация строк до группировки
GROUP BY department_id
HAVING AVG(salary) > 50000 -- фильтрация групп после группировки
AND COUNT(*) >= 3; -- пример дополнительного условия
Что делает запрос:
WHERE status = 'ACTIVE'
→ из таблицы берём только активных сотрудников.GROUP BY department_id
→ группируем активных сотрудников по отделам.HAVING AVG(salary) > 50000
→ оставляем только те отделы, где средняя зарплата выше 50k.COUNT(*) >= 3
→ и в отделе должно быть не менее трёх активных сотрудников.
Итого: запрос показывает отделы с достаточно большим штатом и высокой средней зарплатой.