52.2. pg_aggregate #

O catálogo pg_aggregate armazena informações sobre funções de agregação. Uma função de agregação é uma função que opera em um conjunto de valores (normalmente uma coluna de cada linha que corresponde a uma condição de consulta), e retorna um único valor calculado a partir de todos estes valores. Funções de agregação típicas são sum, count, e max. Cada entrada em pg_aggregate é uma extensão de uma entrada em pg_proc. A entrada em pg_proc carrega o nome da agregação, os tipos de dados de entrada e saída, e outras informações semelhantes às das funções comuns.

Tabela 52.2. Colunas de pg_aggregate

Coluna Tipo de dados

Descrição

aggfnoid regproc (referencia pg_proc.oid)

pg_proc OID da função de agregação

aggkind char

Tipo da agregação: n para agregações normais, o para agregações de conjunto-ordenado, ou h para agregações de conjunto-hipotético

aggnumdirectargs int2

Número de argumentos diretos (não-agregados) de um conjunto ordenado, ou agregações de conjunto-hipotético, contando uma matriz variadic como um argumento. Se for igual a pronargs, a agregação deverá ser variadic, e a matriz variadic irá descrever os argumentos agregados, bem como os argumentos diretos finais. Sempre zero para agregações normais.

aggtransfn regproc (referencia pg_proc.oid)

Função de transição

aggfinalfn regproc (referencia pg_proc.oid)

Função final (zero se nenhuma)

aggcombinefn regproc (referencia pg_proc.oid)

Função de combinação (zero se nenhuma)

aggserialfn regproc (referencia pg_proc.oid)

Função de serialização (zero se nenhuma)

aggdeserialfn regproc (referencia pg_proc.oid)

Função de desserialização (zero se nenhuma)

aggmtransfn regproc (referencia pg_proc.oid)

Função de transição direta para o modo de agregação móvel (zero se nenhuma)

aggminvtransfn regproc (referencia pg_proc.oid)

Função de transição inversa para o modo de agregação móvel (zero se nenhuma)

aggmfinalfn regproc (referencia pg_proc.oid)

Função final para o modo de agregação móvel (zero se nenhuma)

aggfinalextra bool

Verdade para passar argumentos fictícios extras para aggfinalfn

aggmfinalextra bool

Verdade para passar argumentos fictícios extras para aggmfinalfn

aggfinalmodify char

Se aggfinalfn modifica o valor do estado de transição: r se for de leitura-apenas, s se aggtransfn não puder ser aplicado após aggfinalfn, ou w se escrever no valor

aggmfinalmodify char

Como aggfinalmodify, mas para aggmfinalfn

aggsortop oid (referencia pg_operator.oid)

Operador de classificação associado (zero se nenhum)

aggtranstype oid (referencia pg_type.oid)

Tipo de dados dos dados de transição interna (estado) da função de agregação

aggtransspace int4

Tamanho médio aproximado (em bytes) dos dados do estado de transição, ou zero para usar a estimativa padrão

aggmtranstype oid (referencia pg_type.oid)

Tipo de dados dos dados de transição interna (estado) da função de agregação para o modo de agregação móvel (zero se nenhum)

aggmtransspace int4

Tamanho médio aproximado (em bytes) dos dados do estado de transição para o modo de agregação móvel, ou zero para usar a estimativa padrão

agginitval text

O valor inicial do estado de transição. Este é um campo de texto que contém o valor inicial em sua representação de cadeia de caracteres externa. Se este campo for nulo, o valor do estado de transição começará com nulo.

aggminitval text

O valor inicial do estado de transição para o modo de agregação móvel. Este é um campo de texto que contém o valor inicial em sua representação de cadeia de caracteres externa. Se este campo for nulo, o valor do estado de transição começará com nulo.


Veja Agregações definidas pelo usuário para obter mais informações sobre como escrever funções de agregação e o significado das funções de transição, etc.

Exemplo 52.1. Exemplo do tradutor

Funções de agregação

Este exemplo usa o meta-comando \daSx avg do psql para listar todas as funções de agregação para média aritmética (avg) existentes, juntamente com seus tipos de dados de resultado e de argumento, além de uma descrição da função.

ana=> \daSx avg

-[ RECORD 1 ]----------------+-------------------------------------
Esquema                      | pg_catalog
Nome                         | avg
Tipo de dados do resultado   | numeric
Tipo de dados dos argumentos | bigint
Descrição                    | the average (arithmetic mean) as ↵
                             | numeric of all bigint values
-[ RECORD 2 ]----------------+-------------------------------------
Esquema                      | pg_catalog
Nome                         | avg
Tipo de dados do resultado   | double precision
Tipo de dados dos argumentos | double precision
Descrição                    | the average (arithmetic mean) as ↵
                             | float8 of all float8 values
-[ RECORD 3 ]----------------+-------------------------------------
Esquema                      | pg_catalog
Nome                         | avg
Tipo de dados do resultado   | numeric
Tipo de dados dos argumentos | integer
Descrição                    | the average (arithmetic mean) as ↵
                             | numeric of all integer values
-[ RECORD 4 ]----------------+-------------------------------------
Esquema                      | pg_catalog
Nome                         | avg
Tipo de dados do resultado   | interval
Tipo de dados dos argumentos | interval
Descrição                    | the average (arithmetic mean) as ↵
                             | interval of all interval values
-[ RECORD 5 ]----------------+-------------------------------------
Esquema                      | pg_catalog
Nome                         | avg
Tipo de dados do resultado   | numeric
Tipo de dados dos argumentos | numeric
Descrição                    | the average (arithmetic mean) as ↵
                             | numeric of all numeric values
-[ RECORD 6 ]----------------+-------------------------------------
Esquema                      | pg_catalog
Nome                         | avg
Tipo de dados do resultado   | double precision
Tipo de dados dos argumentos | real
Descrição                    | the average (arithmetic mean) as ↵
                             | float8 of all float4 values
-[ RECORD 7 ]----------------+-------------------------------------
Esquema                      | pg_catalog
Nome                         | avg
Tipo de dados do resultado   | numeric
Tipo de dados dos argumentos | smallint
Descrição                    | the average (arithmetic mean) as ↵
                             | numeric of all smallint values


52.2.1. Veja também #

CREATE AGGREGATE, ALTER AGGREGATE, DROP AGGREGATE