Слайды лекций нашего инструктора по базам данных HAVING
и GROUP BY
приводят следующие требования:
![enter image description here](https://i.stack.imgur.com/J8y9F.png)
К сожалению, так как SEO по этой теме настолько насыщен, почти невозможно найти источник, который отвечает на мой вопрос. Я могу найти множество примеров, когда HAVING
действительно используется с агрегатами, но означает ли это, что он ДОЛЖЕН использовать агрегаты?
Исходя из моего понимания и опыта, предложение HAVING
не обязательно только используют группирующие атрибуты или атрибуты, которые появляются в агрегатах (даже если он может , в отличие от его аналога WHERE
).
Насколько я понимаю, HAVING
был создан, потому чтоWHERE
не может работать на уровне группы.
Итак, что именно мешает мне использовать любые другие условия в предложении HAVING
, такие как простое старое условие HAVING attribute = value
, где attribute
не появляется ни в GROUP BY
, ни в агрегате в предложении SELECT
? Визуально говоря, для меня имеет смысл сказать:
"Выберите только те группы, в которых есть строка, у которой есть это значение в этом столбце."