Entendendo o uso da clausula HAVING no MySQL

Utilizada em conjunto com a clausula Group By para criar filtros de agrupamento.

 Escrevendo testes automatizados com PHPUnit

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(*).