# Aggregate Functions

Aggregate functions perform computations across all values of a grouped field.

If you don't precede an aggregate function by a `group by` statement, it treats each line as its own group. Using an aggregate function on an empty set returns null.

- **[avg() or average()](/docs/analytics/bi-dev-guide-saql/guide/bi-saql-fn-agg-avg.md)**

  Returns the average of the values of a measure field.

- **[count()](/docs/analytics/bi-dev-guide-saql/guide/bi-saql-fn-agg-cnt.md)**

  Returns the number of rows that match the query criteria.

- **[first()](/docs/analytics/bi-dev-guide-saql/guide/bi-saql-fn-agg-1st.md)**

  Returns the first value for the specified field.

- **[last()](/docs/analytics/bi-dev-guide-saql/guide/bi-saql-fn-agg-last.md)**

  Returns the last value in the tuple for the specified field.

- **[max()](/docs/analytics/bi-dev-guide-saql/guide/bi-saql-fn-agg-max.md)**

  Returns the maximum value of a dimension or measure field.

- **[median()](/docs/analytics/bi-dev-guide-saql/guide/bi-saql-fn-agg-med.md)**

  Returns the median value of a measure field.

- **[min()](/docs/analytics/bi-dev-guide-saql/guide/bi-saql-fn-agg-min.md)**

  Returns the minimum value of a dimension or measure field.

- **[sum()](/docs/analytics/bi-dev-guide-saql/guide/bi-saql-fn-agg-sum.md)**

  Returns the sum of a numeric field.

- **[unique()](/docs/analytics/bi-dev-guide-saql/guide/bi-saql-fn-agg-unq.md)**

  Returns the count of unique values.

- **[stddev()](/docs/analytics/bi-dev-guide-saql/guide/bi-saql-fn-agg-stdev.md)**

  Returns the standard deviation of the values in a field. Accepts measure fields (but not expressions) as input.

- **[stddevp()](/docs/analytics/bi-dev-guide-saql/guide/bi-saql-fn-agg-stdevp.md)**

  Returns the population standard deviation of the values in a field. Accepts measure fields as input but not expressions.

- **[var()](/docs/analytics/bi-dev-guide-saql/guide/bi-saql-fn-agg-var.md)**

  Returns the variance of the values in a field. Accepts measure fields as input but not expressions.

- **[varp()](/docs/analytics/bi-dev-guide-saql/guide/bi-saql-fn-agg-varp.md)**

  Returns the variance of the values in a field. Accepts measure fields as input but not expressions.

- **[percentile_cont()](/docs/analytics/bi-dev-guide-saql/guide/bi-saql-fn-agg-pc.md)**

  Calculates a percentile based on a continuous distribution of the column value.

- **[percentile_disc()](/docs/analytics/bi-dev-guide-saql/guide/bi-saql-fn-agg-pd.md)**

  Returns the value corresponding to the specified percentile.

- **[regr_intercept()](/docs/analytics/bi-dev-guide-saql/guide/bi-saql-fn-agg-ri.md)**

  Uses two numerical fields to calculate a trend line, then returns the y-intercept value. Use this function to find out the likely value of *field_y* when *field_x* is zero.

- **[regr_slope()](/docs/analytics/bi-dev-guide-saql/guide/bi-saql-fn-agg-rs.md)**

  Uses two numerical fields to calculate a trend line, then returns the slope. Use this function to learn more about the relationship between two numerical fields.

- **[regr_r2()](/docs/analytics/bi-dev-guide-saql/guide/bi-saql-fn-agg-regr2.md)**

  Uses two numerical fields to calculate R-squared, or goodness of fit. Use `regr_r2()` to understand how well the trend line fits your data.

- **[grouping()](/docs/analytics/bi-dev-guide-saql/guide/bi-saql-fn-agg-grouping.md)**

  Returns 1 if null dimension values are due to higher-level aggregates (which usually means the row is a subtotal or grand total), otherwise returns 0.

**See Also**

- [group-by](/docs/analytics/bi-dev-guide-saql/guide/bi-saql-statement-groupby.md)
