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: