Agrupamento sql como usar?

agrupamento sql

Use a clausula GROUP BY para agrupar coluna campos com o mesmo valor.


Sintaxe:


SELECT campos agrupados ou com agregação
FROM
tabela
JOIN ligação de tabelas quando necessário
WHERE restrições da cosulta
GROUP BY campos que serão agrupados;


Exemplos:

Para saber a quantidade de notas emitidas de venda em um mês, para cada cidade seria algo como:


SELECT c.municipio as cidade,  count(v.numero_nota) as quantidade_de_venda
FROM vendas_cabecalho v  
INNER JOIN clientes c ON (c.codigo = v.cliente)
WHERE v.data >= '2020-06-01' AND v.data <= '2020-06-30'
GROUP BY c.municipio
ORDER BY count(v.numero_nota) DESC
LIMIT 3;


Resultado:

cidade quantidade_de_venda
São Paulo 123
Rio de Janeiro 102
Brasilia 86


Para saber o valor da venda total de cada cidade no mês seria algo como:


SELECT c.municipio as cidade, SUM(v.valor)
FROM vendas_cabecalho v  
INNER JOIN clientes c ON (c.codigo = v.cliente)
WHERE v.data >= '2020-06-01' AND v.data <= '2020-06-30'
GROUP BY c.municipio
ORDER BY
SUM(v.numero_nota) DESC
LIMIT 3;


Resultado:

cidade valor
São Paulo 23030,45
Rio de Janeiro 21132,35
Brasilia 18462,86


Para saber o valor da venda total de cada Bairro de Porto em um mês seria algo como:


SELECT c.municipio as cidade, c.bairro, SUM(v.valor)
FROM
vendas_cabecalho v  
INNER JOIN clientes c ON (c.codigo = v.cliente)
WHERE
v.data >= '2020-06-01' AND v.data <= '2020-06-30'AND c.municipio = 'Porto Alegre'
GROUP BY c.municipio
ORDER BY SUM(v.numero_nota) DESC
LIMIT 3;



Esse exemplo seria do MySQL, pois no Postgre daria erro.

Resultado:

cidade bairro valor
Porto Alegre Centro 4159,62
Porto Alegre Menino Deus 39416,16
Porto Alegre Bom Fim 22462,86


O agrupamento serve para juntar informações iguais e tratar outras ou não com as funções de agregação.

Quais são as funções de agregação do GROUP BY?
Como usar funções de agregação com GROUP BY?

Com o GROUP BY pode deixar apenas o conteúdo único sem repetir campos na consulta.

Pode ser usado uma ou mais colunas no GROUP BY. A forma como as colunas com conteúdos visíveis são tratadas varia um pouco em cada banco de dados. Por exemplo quando se coloca uma coluna após o SELECT no Postgre aparece um erro, no MySQL apenas se considera os valores diferentes na apresentação.

Como mostrado nos exemplos as funções de agregação servem para contar(COUNT), somar(SUM), mostrar o valor maior(MAX), ou menor(MIN), mostrar a média(AVG), entre outras coisas de um grupo de informações idênticas.

Quer acompanhar as novidade do site?

Leia mais em:

Agrupamento sql como usar?

Última atualização: 2023-02-15