Task Livecoding SQL Having vs Where Example

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
    → и в отделе должно быть не менее трёх активных сотрудников.

Итого: запрос показывает отделы с достаточно большим штатом и высокой средней зарплатой.