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.