Cláusula GROUP BY

A cláusula GROUP BY, que faz parte da ExpressãoSeleção, agrupa o resultado em subconjuntos que possuem valores correspondentes em uma ou mais colunas. Em cada grupo não há duas linhas com o mesmo valor na coluna, ou colunas, de agrupamento. Para as finalidades de agrupamento os valores nulos são considerados equivalentes.

Normalmente a cláusula GROUP BY é utilizada junto com expressões de agregação.

Sintaxe

GROUP BY nome-da-coluna [ , nome-da-coluna ] *

O nome-da-coluna deve ser uma coluna do escopo corrente da consulta; não pode haver nenhuma coluna do bloco de consulta fora do escopo corrente. Por exemplo, se a cláusula GROUP BY estiver na subconsulta, então não poderá fazer referência a colunas da consulta externa.

Os ItensSelecionados em uma ExpressãoSeleção com cláusula GROUP BY devem conter somente agregações ou colunas de agrupamento.

-- calcular o TEMPO_VÔO médio agrupado por aeroporto
SELECT AVG (TEMPO_VÔO), AEROPORTO_ORIGEM
FROM VÔOS
GROUP BY AEROPORTO_ORIGEM

SELECT MAX(CIDADE), REGIÃO
FROM CIDADES, PAÍSES
WHERE CIDADES.COD_ISO_PAÍS = PAÍSES.COD_ISO_PAÍS
GROUP BY REGIÃO

-- agrupar por um SMALLINT
SELECT ID, AVG(SALÁRIO)
FROM SAMP.EQUIPES
GROUP BY ID

-- Obter as colunas SALÁRIO_MÉDIO, NUM_EMP e NUM_DEP
-- utilizando a cláusula AS
-- Agrupar pela coluna DEP_TRAB utilizando o nome de
-- correlação OUTROS
SELECT OUTROS.DEP_TRAB AS NUM_DEP,
       AVG(OUTROS.SALÁRIO) AS SALÁRIO_MÉDIO,
       COUNT(*) AS NUM_EMP
FROM SAMP.EMPREGADOS OUTROS
GROUP BY OUTROS.DEP_TRAB;

Conceitos relacionados
Interação com o sistema de dependências
Instruções CREATE
Instruções DROP
Instruções RENAME
Instruções SET
Referências relacionadas
Instrução ALTER TABLE
CALL (PROCEDIMENTO)
Cláusula CONSTRAINT
Instrução DECLARE GLOBAL TEMPORARY TABLE
Instrução DELETE
Cláusula FOR UPDATE
Cláusula FROM
Cláusula HAVING
INNER JOIN
Instrução INSERT
Operação JOIN
LEFT OUTER JOIN
Instrução LOCK TABLE
Cláusula ORDER BY
Consulta
RIGHT OUTER JOIN
SubconsultaEscalar
ExpressãoSeleção
Instrução SELECT
ExpressãoTabela
SubconsultaTabela
Instrução UPDATE
VALUES Expressão
Cláusula WHERE
Cláusula WHERE CURRENT OF