SQL GROUP BY: Como agrupar valores idênticos
Se você deseja agrupar linhas com valores idênticos, a instrução SQL GROUP BY é a escolha certa. Geralmente, ela é utilizada em combinação com funções agregadas.
O que é SQL GROUP BY?
Em SQL (Structured 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. Frequentemente, 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 resultados em sua tabela. A instrução é especialmente útil quando é necessário determinar uma ordem ou relacionar valores entre si.
Hospedagem VPS poderosa e de baixo custo para rodar suas aplicações sob medida, com assistente pessoal e suporte 24 horas.
- Save 50% or more vs leading hosts
- Unlimited traffic & no setup fees
- 99.99% uptime guaranteed
- Free 24/7 premium support
Sintaxe e funcionamento 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, …;sqlNo entanto, é mais comum o uso da instrução com uma cláusula WHERE, que permite definir condições específicas. 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, …;sqlCombinar 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 localização e os itens comprados:
| Número do Cliente | Nome | Localização | Itens |
|---|---|---|---|
| 1427 | Schmidt | Goiânia | 13 |
| 1377 | Sampaio | Navegantes | 9 |
| 1212 | Pedroso | Navegantes | 15 |
| 1431 | Müller | Maceió | 22 |
| 1118 | Becker | Goiânia | 10 |
Agora podemos usar o SQL GROUP BY em combinação com a função COUNT() para listar quantos clientes vêm de cada cidade. Aqui está o código correspondente:
SELECT Localização, COUNT(*) AS Quantidade
FROM Lista de Clientes
GROUP BY Localização;sqlComo resultado, obtemos esta nova tabela:
| Localização | Quantidade |
|---|---|
| Maceió | 1 |
| Goiânia | 2 |
| Navegantes | 2 |
Aqui, utilizamos os Aliases em SQL para exibir os resultados como “Quantidade”.
Combinar SQL GROUP BY com SUM()
No próximo exemplo, usamos SQL GROUP BY em combinação com SUM() para calcular e mostrar quantos itens foram pedidos em Navegantes. 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;sqlComo resultado, obtemos:
| Localização | Total |
|---|---|
| Navegantes | 24 |
Combinar SQL GROUP BY com ORDER BY
Também é possível combinar com ORDER BY. Neste caso, ordenamos a tabela pela maior quantidade de itens comprados por cliente em cada cidade, começando pela localização onde o maior número de itens foi adquirido por um cliente. O código correspondente, onde combinamos 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;sqlE o resultado correspondente:
| Localização | Maior |
|---|---|
| Maceió | 22 |
| Navegantes | 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 quantidade 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;sqlIsso resulta na seguinte tabela como nova saída:
| Localização | Número do Cliente | Menor |
|---|---|---|
| Navegantes | 1377 | 9 |
| Goiânia | 1427 | 13 |
| Maceió | 1431 | 22 |
Alternativas ao SQL GROUP BY
Uma alternativa 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.
Um banco de dados exatamente 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 desempenho excepcional, fortes recursos de segurança e consultoria personalizada.

