Skip to content

Aggregate functions

Aggregate functions can be used within SELECT clause.

In line with the SQL spec:

  • Except in the case of COUNT(*), null values in the column are removed before the aggregate is calculated.

  • Without grouping columns, aggregate functions will always return exactly one row - if the input column is empty (after nulls have been removed), the result will be a single row containing a null value.

Numeric aggregate functions

  • AVG([ALL] xs) (average (mean) of all values)

  • AVG(DISTINCT xs) (average (mean) of distinct values)

  • COUNT([ALL] xs) (count of rows that contain non-null values)

  • COUNT(DISTINCT xs) (count of distinct values)

  • COUNT(*) (row count)

  • MAX([ALL|DISTINCT] xs) (maximum value)

  • MIN([ALL|DISTINCT] xs) (minimum value)

  • STDDEV_POP(xs) (population standard deviation)

  • STDDEV_SAMP(xs) (sample standard deviation)

  • SUM([ALL] xs) (sum of values)

  • SUM(DISTINCT xs) (sum of distinct values)

  • VAR_POP(xs) (population variance)

  • VAR_SAMP(xs) (sample variance)

Note:

  • MIN/MAX aggregates are not yet supported on string values.

Boolean aggregate functions

  • BOOL_AND(xs) (true if all values are true; false otherwise)

  • BOOL_OR(xs) (false if all values are false; true otherwise)

Note: In keeping with Postgres, we rename ALL and ANY to BOOL_AND and BOOL_OR to avoid confusion with the logical operators.

Composite-type aggregate functions

  • ARRAY_AGG(xs) (return an array of all of the input values)