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 (1195 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 30 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Ciência e Tecnologia em geral, adora Viagens 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.

7 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.

  3. como passar estes comando num projeto em html e php?

  4. Nilton Oliveira // 03/07/2020 em 17:43 // Responder

    Boa noite,
    Seus artigos são excelentes.
    Preciso implementar no PHP uma list de registros de clientes por setores e local, que vem de duas tabelas relacionadas.
    Você tem algum artigo que possa me dar uma ideia de como implementar.
    Ficorel muito agradecido

  5. Executando direto no sql funciona, podia mostrar como imprimir da mesma forma que aparece no sql na página em php…

  6. Jaconias mendes Ferreira // 25/12/2023 em 21:06 // Responder

    Ola Fabío tudo bemw
    estou tentando implementar um sql no mysql phpmiadmin porem ainda nãoconsegui você poderi me ajudar?Meu email e jaconiasmendes87@gmail.com
    whatssap:11947911699

Escreva um comentário

Seu e-mail não será divulgado


*