PostgreSQL GROUP BY
A cláusula GROUP BY
no PostgreSQL é usada para organizar dados idênticos em grupos. É frequentemente usado com funções agregadas como COUNT
, SUM
, AVG
, MAX
ou MIN
para realizar operações em cada grupo de dados.
Uso
A cláusula GROUP BY
é usada quando você precisa organizar as linhas que têm os mesmos valores nas colunas especificadas em linhas de resumo. Ele segue a declaração SELECT
e quaisquer funções agregadas para determinar como os dados devem ser agrupados.
SELECT column1, aggregate_function(column2)
FROM table_name
GROUP BY column1;
Nessa sintaxe, GROUP BY column1
agrupa o conjunto de resultados pelos valores em column1
.
Exemplos
1. Agrupamento básico
SELECT department, COUNT(*)
FROM employees
GROUP BY department;
Este exemplo conta o número de funcionários em cada departamento, agrupando os resultados com base na coluna department
.
2. Agrupamento com SUM
SELECT department, SUM(salary)
FROM employees
GROUP BY department;
Essa consulta calcula o salário total pago por departamento, agrupando as linhas por department
e somando a coluna salary
.
3. Agrupamento com várias colunas
SELECT department, job_title, AVG(salary)
FROM employees
GROUP BY department, job_title;
Aqui, a consulta agrupa os dados por department
e job_title
, calculando o salário médio para cada combinação exclusiva de departamento e cargo.
4. Agrupamento com HAVING
SELECT department, COUNT(*)
FROM employees
GROUP BY department
HAVING COUNT(*) > 10;
Este exemplo filtra os dados agrupados para incluir somente os departamentos com mais de 10 funcionários usando a cláusula HAVING
.
Dicas e práticas recomendadas
- Selecione apenas as colunas necessárias. Use somente as colunas pelas quais você pretende agrupar ou agregar para garantir uma execução eficiente da consulta.
- Ordene seus resultados. Combine
GROUP BY
comORDER BY
para classificar seus resultados agregados e facilitar a análise. Observe queORDER BY
é processado apósGROUP BY
, o que pode afetar o desempenho e os resultados. - Use HAVING para filtrar grupos. Use a cláusula
HAVING
para filtrar grupos após o estágio de agregação, em vez deWHERE
, que filtra as linhas antes da agregação. - Garanta o agrupamento correto. Sempre inclua todas as colunas não agregadas da instrução
SELECT
na cláusulaGROUP BY
para evitar erros. - Considere o desempenho com grandes conjuntos de dados. Lembre-se de que o uso do site
GROUP BY
com grandes conjuntos de dados pode afetar o desempenho. Considere a possibilidade de indexar as colunas usadas emGROUP BY
para otimizar a execução da consulta.