51.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 51.2. 
    
     pg_aggregate
    
    Columns
   
  
| Name | Type | References | Description | 
|---|---|---|---|
| 
        aggfnoid
        | 
        regproc
        | 
        
          | 
        pg_proc
       OID of the aggregate function | 
| 
        aggkind
        | 
        char
        | Aggregate kind: 
        n
       for
       
        "
        
         normal
        
        "
       
       aggregates,
        o
       for
       
        "
        
         ordered-set
        
        "
       
       aggregates, or
        h
       for
       
        "
        
         hypothetical-set
        
        "
       
       aggregates | |
| 
        aggnumdirectargs
        | 
        int2
        | Number of direct (non-aggregated) arguments of an ordered-set or
       hypothetical-set aggregate, counting a variadic array as one argument.
       If equal to 
        pronargs
       , the aggregate must be variadic
       and the variadic array describes the aggregated arguments as well as
       the final direct arguments.
       Always zero for normal aggregates. | |
| 
        aggtransfn
        | 
        regproc
        | 
        
          | Transition function | 
| 
        aggfinalfn
        | 
        regproc
        | 
        
          | Final function (zero if none) | 
| 
        aggcombinefn
        | 
        regproc
        | 
        
          | Combine function (zero if none) | 
| 
        aggserialfn
        | 
        regproc
        | 
        
          | Serialization function (zero if none) | 
| 
        aggdeserialfn
        | 
        regproc
        | 
        
          | Deserialization function (zero if none) | 
| 
        aggmtransfn
        | 
        regproc
        | 
        
          | Forward transition function for moving-aggregate mode (zero if none) | 
| 
        aggminvtransfn
        | 
        regproc
        | 
        
          | Inverse transition function for moving-aggregate mode (zero if none) | 
| 
        aggmfinalfn
        | 
        regproc
        | 
        
          | Final function for moving-aggregate mode (zero if none) | 
| 
        aggfinalextra
        | 
        bool
        | True to pass extra dummy arguments to 
        aggfinalfn
        | |
| 
        aggmfinalextra
        | 
        bool
        | True to pass extra dummy arguments to 
        aggmfinalfn
        | |
| 
        aggfinalmodify
        | 
        char
        | Whether 
        aggfinalfn
       modifies the
       transition state value:
        r
       if it is read-only,
        s
       if the
        aggtransfn
       cannot be applied after the
        aggfinalfn
       , or
        w
       if it writes on the value | |
| 
        aggmfinalmodify
        | 
        char
        | Like 
        aggfinalmodify
       , but for
       the
        aggmfinalfn
        | |
| 
        aggsortop
        | 
        oid
        | 
        
          | Associated sort operator (zero if none) | 
| 
        aggtranstype
        | 
        oid
        | 
        
          | Data type of the aggregate function's internal transition (state) data | 
| 
        aggtransspace
        | 
        int4
        | Approximate average size (in bytes) of the transition state data, or zero to use a default estimate | |
| 
        aggmtranstype
        | 
        oid
        | 
        
          | Data type of the aggregate function's internal transition (state) data for moving-aggregate mode (zero if none) | 
| 
        aggmtransspace
        | 
        int4
        | Approximate average size (in bytes) of the transition state data for moving-aggregate mode, or zero to use a default estimate | |
| 
        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. | |
| 
        aggminitval
        | 
        text
        | The initial value of the transition state for moving-aggregate mode. 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 37.12 for more information about writing aggregate functions and the meaning of the transition functions, etc.