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 sobre um conjunto de valores (tipicamente uma coluna de cada linha que corresponde à condição do comando), e retorna um único valor calculado a partir destes valores. As 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 contém o nome da agregação, os tipos de dado de entrada e de saída, além de outras informações semelhantes às das funções comuns.
Tabela 43-2. Colunas do catálogo pg_aggregate
Nome | Tipo | Referencia | Descrição |
---|---|---|---|
aggfnoid | regproc | pg_proc .oid | OID da função de agregação em pg_proc |
aggtransfn | regproc | pg_proc .oid | Função de transição da agregação |
aggfinalfn | regproc | pg_proc .oid | Função final da agregação (zero se não houver nenhuma) |
aggtranstype | oid | pg_type .oid | Tipo de dado da transição interna (estado) da função de agregação |
agginitval | text | Valor inicial do estado da transição. É um campo texto, contendo o valor inicial na sua representação externa na forma de cadeia de caracteres. Se o valor for nulo, o valor do estado da transição começa por nulo. |
As novas funções de agregação são registradas através do comando CREATE AGGREGATE. Para obter mais informações sobre como escrever funções de agregação, e o significado das funções de transição, etc., deve ser vista a Seção 33.9
Exemplo de utilização:
SELECT aggfnoid, aggtransfn, aggfinalfn FROM pg_aggregate; aggfnoid | aggtransfn | aggfinalfn ---------------------+---------------------+------------------ pg_catalog.avg | int8_accum | numeric_avg pg_catalog.avg | int4_avg_accum | int8_avg pg_catalog.avg | int2_avg_accum | int8_avg pg_catalog.avg | numeric_accum | numeric_avg pg_catalog.avg | float4_accum | float8_avg pg_catalog.avg | float8_accum | float8_avg pg_catalog.avg | interval_accum | interval_avg pg_catalog.sum | int8_sum | - pg_catalog.sum | int4_sum | - pg_catalog.sum | int2_sum | - pg_catalog.sum | float4pl | - pg_catalog.sum | float8pl | - pg_catalog.sum | cash_pl | - pg_catalog.sum | interval_pl | - pg_catalog.sum | numeric_add | - pg_catalog.max | int8larger | - pg_catalog.max | int4larger | - pg_catalog.max | int2larger | - pg_catalog.max | oidlarger | - pg_catalog.max | float4larger | - pg_catalog.max | float8larger | - pg_catalog.max | int4larger | - pg_catalog.max | date_larger | - pg_catalog.max | time_larger | - pg_catalog.max | timetz_larger | - pg_catalog.max | cashlarger | - pg_catalog.max | timestamp_larger | - pg_catalog.max | timestamptz_larger | - pg_catalog.max | interval_larger | - pg_catalog.max | text_larger | - pg_catalog.max | numeric_larger | - pg_catalog.min | int8smaller | - pg_catalog.min | int4smaller | - pg_catalog.min | int2smaller | - pg_catalog.min | oidsmaller | - pg_catalog.min | float4smaller | - pg_catalog.min | float8smaller | - pg_catalog.min | int4smaller | - pg_catalog.min | date_smaller | - pg_catalog.min | time_smaller | - pg_catalog.min | timetz_smaller | - pg_catalog.min | cashsmaller | - pg_catalog.min | timestamp_smaller | - pg_catalog.min | timestamptz_smaller | - pg_catalog.min | interval_smaller | - pg_catalog.min | text_smaller | - pg_catalog.min | numeric_smaller | - count | int8inc | - pg_catalog.variance | int8_accum | numeric_variance pg_catalog.variance | int4_accum | numeric_variance pg_catalog.variance | int2_accum | numeric_variance pg_catalog.variance | float4_accum | float8_variance pg_catalog.variance | float8_accum | float8_variance pg_catalog.variance | numeric_accum | numeric_variance pg_catalog.stddev | int8_accum | numeric_stddev pg_catalog.stddev | int4_accum | numeric_stddev pg_catalog.stddev | int2_accum | numeric_stddev pg_catalog.stddev | float4_accum | float8_stddev pg_catalog.stddev | float8_accum | float8_stddev pg_catalog.stddev | numeric_accum | numeric_stddev (60 linhas)