А HAVING всегда можно написать только после GROUP BY - такой синтаксис команды SELECT. GROUP BY может не быть, но если он есть — он должен быть до фразы HAVING
HAVING - это синтаксический сахар. По сути, СУБД под капотом из запроса с GROUP BY делает подзапрос, на котором делает WHERE. Для простоты понимания: SELECT C1, COUNT(*) AS NumberOfC1 FROM Table1 WHERE 1 = 1 GROUP BY C1 HAVING NumberOfC1 > 1 Под капотом это: SELECT C1, NumberOfC1 FROM ( SELECT C1, COUNT(*) AS NumberOfC1 FROM Table1 WHERE 1 = 1 GROUP BY C1) T WHERE NumberOfC1 > 1
Нет, это очень грубо не так. HAVING потому и нужен, что там разрешено использование агрегатных функций.
Обсуждают сегодня