A cláusula HAVING restringe os resultados do GROUP BY na
.
A cláusula HAVING é aplicada a cada grupo da tabela agrupada, de forma parecida
como a cláusula WHERE é aplicada à lista de seleção.
Se não houver uma cláusula GROUP BY, a cláusula HAVING será aplicada a todo o
resultado como um único grupo.
A cláusula SELECT não pode fazer referência direta a qualquer coluna que não
possua uma cláusula GROUP BY.
Entretanto, pode fazer referência a constantes, agregações, e registros
especiais.
Sintaxe
HAVING CondiçãoProcura
A CondiçãoProcura, que é uma ExpressãoBooleana especializada,
pode conter apenas as colunas de agrupamento (consulte a
), colunas que fazem parte das
expressões de agregação, e as colunas que fazem parte da subconsulta.
Por exemplo, a seguinte consulta é ilegal, porque a coluna SALÁRIO não é uma
coluna de agrupamento, não aparece em uma agregação, e não está em uma
subconsulta:
-- SELECT COUNT(*)
-- FROM SAMP.EQUIPES
-- GROUP BY ID
-- HAVING SALÁRIO > 15000;
As agregações na cláusula HAVING não precisam aparecer na lista de seleção.
Se a cláusula HAVING possuir uma subconsulta, a subconsulta poderá fazer
referência ao bloco de consulta externo se, e somente se, fizer referência a
uma coluna de agrupamento.