No MySQL, a cláusula HAVING é usada em conjunto com a cláusula GROUP BY para filtrar os resultados de uma consulta que envolve funções de agregação, como COUNT, SUM, AVG, dentre outras. A cláusula HAVING é aplicada logo após o GROUP BY e permite que você especifique condições para restringir os grupos de resultados retornados.
Veja um exemplo para entender melhor o uso do HAVING. Suponha que você tenha uma tabela chamada orders que contém informações sobre pedidos, e você deseja encontrar os clientes que fizeram mais de um pedido:
SELECT customer_id, COUNT(*) as total
FROM orders
GROUP BY customer_id
HAVING total > 1;
Primeiramente perceba que a gente fez o uso do alias total para armazenar a quantidade de registros. Observe com detalhe as demais explicações abaixo.
SELECT customer_id, COUNT(*) as total_pedidos
: Aqui, estamos contando o número de pedidos para cada cliente e selecionando o ID
do cliente e o total de pedidos;FROM orders
: Especifica a tabela da qual estamos selecionando dados (orders neste caso);GROUP BY customer_id
: Agrupa os resultados pelo ID do cliente;HAVING total_pedidos > 1
: Filtra os resultados para incluir apenas aqueles em que o total de pedidos é maior que 1.Portanto, a consulta acima retornará apenas os clientes que fizeram mais de um pedido. O HAVING é usado para aplicar condições às funções de agregação, neste exemplo, o COUNT(*)
.