A cláusula HAVING restringe os resultados do GROUP BY na ExpressãoSeleção. 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.
HAVING CondiçãoProcura
-- 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.
-- Descobrir o número total de assentos econômicos
-- ocupados no vôo, agrupado por linha aérea,
-- somente quando o grupo possuir pelo menos 2 linhas.
SELECT SUM(ASSENTOS_ECONÔMICOS_OCUPADOS), LINHA_AÉREA_CHEIA
FROM VÔOS_DISPONIBILIDADE, LINHAS_AÉREAS
WHERE SUBSTR(VÔOS_DISPONIBILIDADE.ID_VÔO, 1, 2) = LINHA_AÉREA
GROUP BY LINHA_AÉREA_CHEIA
HAVING COUNT(*) > 1