Agregações (funções de conjunto)

Esta seção descreve as agregações (também descritas como funções de conjunto no ANSI SQL-92 e como funções de coluna em algumas literaturas sobre banco de dados). As agregações fornecem meios de avaliar uma expressão para um conjunto de linhas. Enquanto as outras funções nativas operam sobre uma única expressão, as funções de agregação operam sobre conjuntos de valores reduzindo-os a um único valor escalar. As agregações nativas podem calcular o valor mínimo, o valor máximo, a soma e a média de uma expressão com relação a um conjunto de valores, assim como contar linhas. Também podem ser criadas agregações do usuário para executar outras funções de conjunto, como calcular o desvio padrão.

As agregações nativas podem operar nos tipos de dado mostrados em Tipos de dado permitidos pelas agregações nativas.
Tabela 1. Tipos de dado permitidos pelas agregações nativas
  Todos os tipos Tipos de dado numéricos nativos
COUNT X X
MIN   X
MAX   X
AVG   X
SUM   X
As agregações são permitidas apenas:
Todas as expressões nos ItensSelecionados da ExpressãoSeleção devem ser agregações ou colunas agrupadas (consulte a Cláusula GROUP BY) (O mesmo é verdade se houver uma cláusula HAVING sem uma cláusula GROUP BY). Isto se deve ao fato do ResultSet da ExpressãoSeleção dever ser um escalar (valor único) ou um vetor (vários valores), mas não a uma mistura dos dois (as agregações têm como resultado um valor escalar, e a referência a uma coluna pode ter como resultado um vetor). Por exemplo, a consulta a seguir mistura valor escalar e vetor e, portanto, não é válida:
-- inválido
SELECT MIN(TEMPO_VÔO), ID_VÔO
FROM VÔOS
Não são permitidas agregações em referências externas (correlações). Isto significa que se a subconsulta contiver uma agregação, esta agregação não poderá avaliar uma expressão que inclua uma referência a uma coluna do bloco de consulta externo. Por exemplo, a seguinte consulta não é válida porque SUM opera sobre uma coluna da consulta externa:
SELECT c1
FROM t1
GROUP BY c1
HAVING c2 >
    (SELECT t2.x
    FROM t2
    WHERE t2.y = SUM(t1.c3)) 

O cursor declarado em um ResultSet que inclui uma agregação no bloco de consulta externo não é atualizável.

Esta seção inclui as seguintes agregações: