Como contar quantos registros existem em cada grupo de um JOIN?

Podemos contar quantos registros existem em cada grupo de um JOIN no SQL utilizando GROUP BY com COUNT(), organizando os dados de forma estruturada.

Como contar quantos registros existem em cada grupo de um JOIN?

No SQL, podemos utilizar GROUP BY com COUNT() para contar quantos registros existem em cada grupo quando usamos um JOIN. Isso é útil para quantificar pedidos por cliente, produtos vendidos por categoria, entre outros cenários.

Contando registros agrupados em um JOIN

Se quisermos saber quantos pedidos cada cliente realizou, usamos:

SELECT clientes.nome, COUNT(pedidos.id) AS total_pedidos 
FROM clientes 
LEFT JOIN pedidos ON clientes.id = pedidos.cliente_id 
GROUP BY clientes.nome;

Isso retorna a quantidade de pedidos por cliente, incluindo clientes que ainda não fizeram pedidos.

Filtrando grupos com HAVING

Podemos filtrar os resultados para exibir apenas clientes com mais de 5 pedidos:

SELECT clientes.nome, COUNT(pedidos.id) AS total_pedidos 
FROM clientes 
LEFT JOIN pedidos ON clientes.id = pedidos.cliente_id 
GROUP BY clientes.nome 
HAVING COUNT(pedidos.id) > 5;

Aqui, listamos apenas os clientes com mais de 5 pedidos registrados.

Contando produtos por categoria

Se quisermos saber quantos produtos existem em cada categoria:

SELECT categorias.nome, COUNT(produtos.id) AS total_produtos 
FROM categorias 
LEFT JOIN produtos ON categorias.id = produtos.categoria_id 
GROUP BY categorias.nome;

Isso retorna todas as categorias e a quantidade de produtos em cada uma.

Diferença entre WHERE e HAVING

  • WHERE filtra antes da agregação.
  • HAVING filtra após a agregação.

Cuidados ao contar registros com JOIN

  • Sempre utilize GROUP BY quando usar COUNT() para evitar erros de agrupamento.
  • Para evitar valores NULL, certifique-se de que a tabela de junção está bem estruturada.
  • Se quiser incluir registros sem correspondência, utilize LEFT JOIN ao invés de INNER JOIN.

O uso de GROUP BY com JOIN no SQL é essencial para criar relatórios organizados e extrair insights dos dados. Em um sistema de e-commerce, por exemplo, podemos utilizá-lo para contar quantos pedidos foram feitos por cliente, quais categorias possuem mais produtos cadastrados ou até mesmo identificar quais funcionários registraram mais vendas. O uso correto da agregação no SQL permite melhorar a análise de dados e otimizar consultas para relatórios de negócios.

Algumas aplicações:

  • Contar pedidos por cliente
  • Verificar quantos produtos existem por categoria
  • Identificar funcionários com maior número de vendas
  • Listar quantos comentários um usuário fez em um blog
  • Analisar acessos por página em um sistema web

Dicas para quem está começando

  • Use COUNT(*) para contar todos os registros
  • Prefira COUNT(coluna) para contar apenas valores não nulos
  • Sempre utilize GROUP BY ao combinar COUNT() com JOIN
  • Se precisar filtrar resultados após a agregação, utilize HAVING
  • Para garantir que todos os grupos apareçam, utilize LEFT JOIN

Contribuições de Rodrigo Martins

Compartilhe este tutorial: Como contar quantos registros existem em cada grupo de um JOIN?

Compartilhe este tutorial

Continue aprendendo:

Como evitar dados duplicados ao unir tabelas no SQL?

Para evitar duplicações ao unir tabelas no SQL, utilizamos DISTINCT, UNION e técnicas como GROUP BY para consolidar registros.

Tutorial anterior

Como fazer join entre tabelas sem chaves estrangeiras?

Podemos unir tabelas no SQL sem chaves estrangeiras utilizando colunas comuns, funções e técnicas alternativas como JOINs baseados em valores semelhantes.

Próximo tutorial