## 41.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 41.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)
`aggtranstype` | `oid` | ``pg_type`.oid` | The 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 the value is null, the transition state value starts out null.

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