Bóson Treinamentos em Ciência e Tecnologia

MySQL – GROUP BY – Agrupamento de Registros

Cláusula GROUP BY em MySQL

Cláusula GROUP BY no MySQL

Usamos a cláusula GROUP BY para agrupar registros em subgrupos baseados em colunas ou valores retornados por uma expressão.

Com o GROUP BY podemos agrupar os valores de uma coluna e também realizar cálculos sobre esses valores. Desta forma, ao realizarmos ma consulta, os valores encontrados nas linhas são agrupados e então uma função de agregação pode ser aplicada sobre esses grupos.

Sintaxe básica:

SELECT colunas, função_agregação()
FROM tabela
WHERE filtro
GROUP BY coluna

Criar uma tabela para testarmos o GROUP BY:

CREATE TABLE Vendas (
ID Smallint Primary Key,
Nome_Vendedor Varchar(20),
Quantidade Int,
Produto Varchar(20),
Cidade Varchar(20)
);

Inserir registros na tabela criada para teste de GROUP BY:

INSERT INTO Vendas (ID, Nome_Vendedor, Quantidade, Produto, Cidade)
  VALUES
(10,'Jorge',1400,'Mouse','São Paulo'),
(12,'Tatiana',1220,'Teclado','São Paulo'),
(14,'Ana',1700,'Teclado','Rio de Janeiro'),
(15,'Rita',2120,'Webcam','Recife'),
(18,'Marcos',980,'Mouse','São Paulo'),
(19,'Carla',1120,'Webcam','Recife'),
(22,'Roberto',3145,'Mouse','São Paulo');

Usando o GROUP BY:

1 – Consulta usando agregação para obter o total de vendas de Mouses (sem o GROUP BY):

SELECT SUM(Quantidade) As TotalMouses
FROM Vendas
WHERE Produto = 'Mouse';

2 – Consulta totalizando as vendas de todos os produtos por cidade:

SELECT Cidade, SUM(Quantidade) As Total
FROM Vendas
GROUP BY Cidade;

3 – Consulta contando o número de registros de vendas (quantidade de vendas) por cidade:

SELECT Cidade, COUNT(*) As Total
FROM Vendas
GROUP BY Cidade;

4 – Consulta com o total de vendas realizadas por cada vendedor:

SELECT Nome_Vendedor, SUM(Quantidade)
FROM Vendas
GROUP BY Nome_Vendedor;

Também é possível utilizar a cláusula GROUP BY sem o emprego de funções de agregação. Neste caso, a consulta simplesmente retornará valores sem que haja repetição de dados na coluna indicada pela cláusula. Isso é equivalente a aplicar a cláusula DISTINCT em uma consulta usando apenas o SELECT simples.

Muitas vezes é necessário filtrar dados ons grupos retornados pelo GROUP BY. Para isso, empregamos a cláusula HAVING.

Assista agora a um vídeo sobre o uso da cláusula GROUP BY em consultas realizadas no MySQL:

 

Sair da versão mobile