Se você deseja agrupar linhas com valores idênticos, a instrução SQL GROUP BY é a escolha certa. Ge­ral­mente, ela é utilizada em com­bi­na­ção com funções agregadas.

O que é SQL GROUP BY?

Em SQL (Struc­tu­red Query Language), GROUP BY é uma instrução usada para agrupar linhas com valores idênticos em um grupo. Ela é usada com o comando SQL SELECT e segue a cláusula WHERE. Fre­quen­te­mente, SQL GROUP BY é combinado com funções como SQL AVG(), SQL COUNT(), MAX(), MIN() ou SUM(). Isso permite que você realize cálculos e exiba os re­sul­ta­dos em sua tabela. A instrução é es­pe­ci­al­mente útil quando é ne­ces­sá­rio de­ter­mi­nar uma ordem ou re­la­ci­o­nar valores entre si.

VPS Hosting (Virtual Private Servers)
World-class VPS at America’s lowest price

Hos­pe­da­gem VPS poderosa e de baixo custo para rodar suas apli­ca­ções sob medida, com as­sis­tente pessoal e suporte 24 horas.

  • Save 50% or more vs leading hosts
  • Unlimited traffic & no setup fees 
  • 99.99% uptime gua­ran­teed
  • Free 24/7 premium support 

Sintaxe e fun­ci­o­na­mento de SQL GROUP BY

A sintaxe básica do SQL GROUP BY é a seguinte:

SELECT coluna1, coluna2, coluna3, …
FROM nome_da_tabela
GROUP BY coluna1, coluna2, coluna3, …;
sql

No entanto, é mais comum o uso da instrução com uma cláusula WHERE, que permite definir condições es­pe­cí­fi­cas. Essa versão se parece com isso:

SELECT coluna1, coluna2, coluna3, …
FROM nome_da_tabela
WHERE condição
GROUP BY coluna1, coluna2, coluna3, …
ORDER BY coluna1, coluna2, coluna3, …;
sql

Combinar SQL GROUP BY com COUNT()

Para ilustrar como usar o SQL GROUP BY, vamos criar uma tabela simples chamada “Lista de Clientes”. Ela contém colunas para o número do cliente, o nome, a lo­ca­li­za­ção e os itens comprados:

Número do Cliente Nome Lo­ca­li­za­Ã§Ã£o Itens
1427 Schmidt Goiânia 13
1377 Sampaio Na­ve­gan­tes 9
1212 Pedroso Na­ve­gan­tes 15
1431 Müller Maceió 22
1118 Becker Goiânia 10

Agora podemos usar o SQL GROUP BY em com­bi­na­ção com a função COUNT() para listar quantos clientes vêm de cada cidade. Aqui está o código cor­res­pon­dente:

SELECT Localização, COUNT(*) AS Quantidade
FROM Lista de Clientes
GROUP BY Localização;
sql

Como resultado, obtemos esta nova tabela:

Lo­ca­li­za­Ã§Ã£o Quan­ti­dade
Maceió 1
Goiânia 2
Na­ve­gan­tes 2

Aqui, uti­li­za­mos os Aliases em SQL para exibir os re­sul­ta­dos como “Quan­ti­dade”.

Combinar SQL GROUP BY com SUM()

No próximo exemplo, usamos SQL GROUP BY em com­bi­na­ção com SUM() para calcular e mostrar quantos itens foram pedidos em Na­ve­gan­tes. Para isso, usamos o seguinte código:

SELECT Localização, SUM(Itens) AS Total
FROM Lista de Clientes
WHERE Localização = 'Navegantes'
GROUP BY Localização;
sql

Como resultado, obtemos:

Lo­ca­li­za­Ã§Ã£o Total
Na­ve­gan­tes 24

Combinar SQL GROUP BY com ORDER BY

Também é possível combinar com ORDER BY. Neste caso, ordenamos a tabela pela maior quan­ti­dade de itens comprados por cliente em cada cidade, começando pela lo­ca­li­za­ção onde o maior número de itens foi adquirido por um cliente. O código cor­res­pon­dente, onde com­bi­na­mos SQL GROUP BY com as funções MAX() e ORDER BY, é o seguinte:

SELECT Localização, MAX(Itens) AS Maior
FROM Lista de Clientes
GROUP BY Localização ORDER BY Maior DESC;
sql

E o resultado cor­res­pon­dente:

Lo­ca­li­za­Ã§Ã£o Maior
Maceió 22
Na­ve­gan­tes 15
Goiânia 13

Combinar SQL GROUP BY com HAVING

Você também pode combinar SQL GROUP BY com SQL HAVING. No exemplo a seguir, removemos da lista os clientes cuja numeração seja inferior a 1300. As demais pessoas são ordenadas de acordo com a quan­ti­dade de itens comprados em ordem crescente. O código fica assim:

A seguir, temos o código SQL:

SELECT Localização, Número do Cliente, MIN(Itens) AS Menor
FROM Lista de Clientes
GROUP BY Localização, Número do Cliente HAVING Número do Cliente > 1300;
sql

Isso resulta na seguinte tabela como nova saída:

Lo­ca­li­za­Ã§Ã£o Número do Cliente Menor
Na­ve­gan­tes 1377 9
Goiânia 1427 13
Maceió 1431 22

Al­ter­na­ti­vas ao SQL GROUP BY

Uma al­ter­na­tiva popular ao SQL GROUP BY é a instrução PARTITION BY. A diferença é que, com essa instrução, todos os valores originais também são mantidos e exibidos. Além disso, muitas funções agregadas também funcionam sem o uso da cláusula SQL GROUP BY.

Dica

Um banco de dados exa­ta­mente como você deseja: Com o SQL Server Hosting da IONOS, você tem a opção de escolher entre MSSQL, MySQL ou MariaDB, e em todos os casos, você se beneficia de um de­sem­pe­nho ex­cep­ci­o­nal, fortes recursos de segurança e con­sul­to­ria per­so­na­li­zada.

Ir para o menu principal