MySQL – GROUP BY – Agrupamento de Registros

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';

Cláusula SQL GROUP BY MySQL

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

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

Cláusula SQL GROUP BY MySQL

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;

Cláusula SQL GROUP BY MySQL

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

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

Cláusula SQL GROUP BY MySQL

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:

 

Sobre Fábio dos Reis (1278 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 25 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Unix, Linux e Open Source em geral, adora Eletrônica e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.
Contato: Website

3 Comentários em MySQL – GROUP BY – Agrupamento de Registros

  1. Você esta de parabéns por disponibilizar este material este excelente material.

    Muito obrigado

  2. Ola Fabio,
    Quero agradecer, suas video aulas, sao otimas, estou aprendendo muito com elas.
    Muito obrigada pelo execelente trabalho.

2 Trackbacks & Pingbacks

  1. MySQL - cláusula HAVING - Filtrando os resultados do Agrupamento
  2. MySQL - Funções de Agregação (MAX, MIN, AVG, COUNT, SUM)

Escreva um comentário

Seu e-mail não será divulgado


*