Pular para o conteúdo principal
Documentos
Sintaxe básicaFunções JSONAcionadoresGerenciamento de tabelas e esquemasFunções de cadeia de caracteresFunções matemáticasFunções de dataBancos de dadosÍndices

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 com ORDER BY para classificar seus resultados agregados e facilitar a análise. Observe que ORDER BY é processado após GROUP 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 de WHERE, 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áusula GROUP 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 em GROUP BY para otimizar a execução da consulta.