junior
Для чего используется оператор HAVING?
HAVING используется для фильтрации групп, созданных оператором GROUP BY, по заданным условиям. Он работает с результатами агрегатных функций (COUNT, SUM, AVG, MIN, MAX), что невозможно сделать в WHERE, поскольку WHERE выполняется до группировки.
Пример
-- Найти отделы, где средняя зарплата превышает 100 000
SELECT department, AVG(salary) AS avg_salary
FROM employees
GROUP BY department
HAVING AVG(salary) > 100000;
Логический порядок: сначала WHERE фильтрует строки, затем GROUP BY группирует, затем HAVING фильтрует уже сформированные группы. Таким образом, HAVING — это WHERE для групп.
На собеседовании: ключевое —
HAVINGфильтрует группы после агрегации, аWHERE— строки до агрегации. Частая ошибка — использоватьHAVINGбезGROUP BYдля простой фильтрации (это работает, но неэффективно).