42.2. pg_aggregate

## 42.2. `pg_aggregate`

The catalog `pg_aggregate` stores information about aggregate functions. An aggregate function is a function that operates on a set of values (typically one column from each row that matches a query condition) and returns a single value computed from all these values. Typical aggregate functions are `sum`, `count`, and `max`. Each entry in `pg_aggregate` is an extension of an entry in `pg_proc`. The `pg_proc` entry carries the aggregate's name, input and output data types, and other information that is similar to ordinary functions.

Table 42.2. `pg_aggregate` Columns

Name | Type | References | Description
--- | --- | --- | ---
`aggfnoid` | `regproc` | ``pg_proc`.oid` | `pg_proc` OID of the aggregate function
`aggtransfn` | `regproc` | ``pg_proc`.oid` | Transition function
`aggfinalfn` | `regproc` | ``pg_proc`.oid` | Final function (zero if none)
`aggsortop` | `oid` | ``pg_operator`.oid` | Associated sort operator (zero if none)
`aggtranstype` | `oid` | ``pg_type`.oid` | Data type of the aggregate function's internal transition (state) data
`agginitval` | `text` |  | The initial value of the transition state. This is a text field containing the initial value in its external string representation. If this field is null, the transition state value starts out null.

New aggregate functions are registered with the `CREATE AGGREGATE` command. See Section 32.10, “User-Defined Aggregates” for more information about writing aggregate functions and the meaning of the transition functions, etc.