Aggregations

Aggregate functions follow the same principle, and are listed in their own table below so that an engine can look up the machinery it needs without hunting through the prose. A SQL aggregate is assembled from up to three PostgreSQL machinery functions, each exposed under a canonical name built from the aggregate name and its role: a transition function <aggregate>Transition (always present), a combine function <aggregate>Combine used for parallel aggregation, and a final function <aggregate>Final. The combine and final roles are each optional: an aggregate whose transition state is already its result has no final function (for example extent), and an aggregate that does not support partial aggregation has no combine function (for example the append aggregates). The roles stay distinct and uniformly named so that every binding can reconstruct the aggregate from the catalog. The following table lists every aggregate and its machinery functions; a dash (—) marks a role the aggregate does not define.

CategoryTransitionCombineFinal
CounttCountTransitiontCountCombinetCountFinal
 wCountTransitionwCountCombinewCountFinal
SumtSumTransitiontSumCombinetSumFinal
 wSumTransitionwSumCombinewSumFinal
AveragetAvgTransitiontAvgCombinetAvgFinal
 wAvgTransitionwAvgCombinewAvgFinal
Minimum / maximumtMinTransitiontMinCombinetMinFinal
 tMaxTransitiontMaxCombinetMaxFinal
 wMinTransitionwMinCombinewMinFinal
 wMaxTransitionwMaxCombinewMaxFinal
BooleantAndTransitiontAndCombinetAndFinal
 tOrTransitiontOrCombinetOrFinal
CentroidtCentroidTransitiontCentroidCombinetCentroidFinal
Point cloudtnpointsTransitiontnpointsCombinetnpointsFinal
 tdensityTransitiontdensityCombinetdensityFinal
Bounding boxextentTransitionextentCombine—
UnionsetUnionTransitionsetUnionCombinesetUnionFinal
 spanUnionTransitionspanUnionCombinespanUnionFinal
 spansetUnionTransitionspansetUnionCombinespansetUnionFinal
MergemergeTransitionmergeCombinemergeFinal
AppendappendInstantTransition—appendInstantFinal
 appendSequenceTransition—appendSequenceFinal