Ответ
GROUP BY группирует строки по указанным столбцам, а HAVING фильтрует уже сгруппированные результаты (аналог WHERE, но для агрегатных функций).
Пример:
-- Группировка по department_id с фильтрацией по средней зарплате
SELECT department_id, AVG(salary) as avg_salary
FROM employees
GROUP BY department_id
HAVING AVG(salary) > 50000;
Ключевые отличия:
GROUP BYвыполняется доHAVING.WHEREфильтрует строки до группировки,HAVING— после.- В
HAVINGможно использовать агрегатные функции (SUM,AVGи т.д.), вWHERE— нет.