Операторы HAVING и GROUP BY в PostgreSQL отличаются по своему назначению:
- GROUP BY определяет, как строки будут группироваться. 1 Он объединяет в одну строку все выбранные строки, которые имеют одинаковые значения для сгруппированных выражений. 2
- HAVING указывает, какие группы будут включены в выходной результат, то есть выполняет фильтрацию групп. 1 Его использование аналогично применению оператора WHERE, но в отличие от него HAVING фильтрует групповые строки, созданные GROUP BY. 25
Таким образом, GROUP BY помогает суммировать данные, объединяя в одну строку записи, которые имеют общие значения одного или нескольких столбцов, а HAVING позволяет указать условия, которые каждая группа должна удовлетворить, чтобы быть включённой в результат. 3