InfluxQL aggregate functions

Use aggregate functions to assess, aggregate, and return values in your data. Aggregate functions return one row containing the aggregate values from each InfluxQL group.

Each aggregate function below covers syntax including parameters to pass to the function, and examples of how to use the function. Examples use NOAA water sample data.

COUNT()

Returns the number of non-null field values. Supports all field value data types.

Syntax

  1. SELECT COUNT( [ * | <field_key> | /<regular_expression>/ ] ) FROM_clause [WHERE_clause] [GROUP_BY_clause] [ORDER_BY_clause] [LIMIT_clause] [OFFSET_clause] [SLIMIT_clause] [SOFFSET_clause]

COUNT(*)

Returns the number of field values associated with each field key in the measurement.

COUNT(field_key)

Returns the number of field values associated with the field key.

COUNT(/regular_expression/)

Returns the number of field values associated with each field key that matches the regular expression.

Examples

Count values for a field

Return the number of non-null field values in the water_level field key in the h2o_feet measurement.

  1. SELECT COUNT("water_level") FROM "h2o_feet"

name: h2o_feet

timecount
1970-01-01T00:00:00Z61026.0000000000

Count values for each field in a measurement

Return the number of non-null field values for each field key associated with the h2o_feet measurement. The h2o_feet measurement has two field keys: level description and water_level.

  1. SELECT COUNT(*) FROM "h2o_feet"

name: h2o_feet

timecount_level descriptioncount_water_level
1970-01-01T00:00:00Z61026.000000000061026.0000000000

Count the values that match a regular expression

Return the number of non-null field values for every field key that contains the word water in the h2o_feet measurement.

  1. SELECT COUNT(/water/) FROM "h2o_feet"

name: h2o_feet

timecount_water_level
1970-01-01T00:00:00Z61026.0000000000

Count distinct values for a field

Return the number of unique field values for the level description field key and the h2o_feet measurement. InfluxQL supports nesting DISTINCT() in COUNT().

  1. SELECT COUNT(DISTINCT("level description")) FROM "h2o_feet"

name: h2o_feet

timecount
1970-01-01T00:00:00Z4.0000000000

DISTINCT()

Returns the list of unique field values. Supports all field value data types.

InfluxQL supports nesting DISTINCT() with COUNT().

Syntax

  1. SELECT DISTINCT( [ <field_key> | /<regular_expression>/ ] ) FROM_clause [WHERE_clause] [GROUP_BY_clause] [ORDER_BY_clause] [LIMIT_clause] [OFFSET_clause] [SLIMIT_clause] [SOFFSET_clause]

DISTINCT(field_key)

Returns the unique field values associated with the field key.

Examples

List the distinct field values associated with a field key

Return a tabular list of the unique field values in the level description field key in the h2o_feet measurement.

  1. SELECT DISTINCT("level description") FROM "h2o_feet"

name: h2o_feet

timedistinct
1970-01-01T00:00:00Zbetween 6 and 9 feet
1970-01-01T00:00:00Zbelow 3 feet
1970-01-01T00:00:00Zbetween 3 and 6 feet
1970-01-01T00:00:00Zat or greater than 9 feet

INTEGRAL()

Returns the area under the curve for subsequent field values.

INTEGRAL() does not support fill(). INTEGRAL() supports int64 and float64 field value data types.

Syntax

  1. SELECT INTEGRAL( [ * | <field_key> | /<regular_expression>/ ] [ , <unit> ] ) FROM_clause [WHERE_clause] [GROUP_BY_clause] [ORDER_BY_clause] [LIMIT_clause] [OFFSET_clause] [SLIMIT_clause] [SOFFSET_clause]

InfluxDB calculates the area under the curve for subsequent field values and converts those results into the summed area per unit. The unit argument is an integer followed by an optional duration literal. If the query does not specify the unit, the unit defaults to one second (1s).

INTEGRAL(field_key)

Returns the area under the curve for subsequent field values associated with the field key.

INTEGRAL(/regular_expression/)

Returns the area under the curve for subsequent field values associated with each field key that matches the regular expression.

INTEGRAL(*)

Returns the average field value associated with each field key in the measurement.

Examples

The following examples use a subset of the NOAA water sample data data:

  1. SELECT "water_level" FROM "h2o_feet" WHERE "location" = 'santa_monica' AND time >= '2019-08-18T00:00:00Z' AND time <= '2019-08-18T00:30:00Z'

name: h2o_feet

timewater_level
2019-08-18T00:00:00Z2.3520000000
2019-08-18T00:06:00Z2.3790000000
2019-08-18T00:12:00Z2.3430000000
2019-08-18T00:18:00Z2.3290000000
2019-08-18T00:24:00Z2.2640000000
2019-08-18T00:30:00Z2.2670000000

Calculate the integral for the field values associated with a field key

Return the area under the curve (in seconds) for the field values associated with the water_level field key and in the h2o_feet measurement.

  1. SELECT INTEGRAL("water_level") FROM "h2o_feet" WHERE "location" = 'santa_monica' AND time >= '2019-08-18T00:00:00Z' AND time <= '2019-08-18T00:30:00Z'

name: h2o_feet

timeintegral
1970-01-01T00:00:00Z4184.8200000000

Calculate the integral for the field values associated with a field key and specify the unit option

Return the area under the curve (in minutes) for the field values associated with the water_level field key and in the h2o_feet measurement.

  1. SELECT INTEGRAL("water_level",1m) FROM "h2o_feet" WHERE "location" = 'santa_monica' AND time >= '2019-08-18T00:00:00Z' AND time <= '2019-08-18T00:30:00Z'

name: h2o_feet

timeintegral
1970-01-01T00:00:00Z69.7470000000

Calculate the integral for the field values associated with each field key in a measurement and specify the unit option

Return the area under the curve (in minutes) for the field values associated with each field key that stores numeric values in the h2o_feet measurement. The h2o_feet measurement has on numeric field: water_level.

  1. SELECT INTEGRAL(*,1m) FROM "h2o_feet" WHERE "location" = 'santa_monica' AND time >= '2019-08-18T00:00:00Z' AND time <= '2019-08-18T00:30:00Z'

name: h2o_feet

timeintegral_water_level
1970-01-01T00:00:00Z69.7470000000

Calculate the integral for the field values associated with each field key that matches a regular expression and specify the unit option

Return the area under the curve (in minutes) for the field values associated with each field key that stores numeric values includes the word water in the h2o_feet measurement.

  1. SELECT INTEGRAL(/water/,1m) FROM "h2o_feet" WHERE "location" = 'santa_monica' AND time >= '2019-08-18T00:00:00Z' AND time <= '2019-08-18T00:30:00Z'

name: h2o_feet

timeintegral_water_level
1970-01-01T00:00:00Z69.7470000000

Calculate the integral for the field values associated with a field key and include several clauses

Return the area under the curve (in minutes) for the field values associated with the water_level field key and in the h2o_feet measurement in the time range between 2019-08-18T00:00:00Z and 2019-08-18T00:30:00Z, grouped results into 12-minute intervals, and limit the number of results returned to one.

  1. SELECT INTEGRAL("water_level",1m) FROM "h2o_feet" WHERE "location" = 'santa_monica' AND time >= '2019-08-18T00:00:00Z' AND time <= '2019-08-18T00:30:00Z' GROUP BY time(12m) LIMIT 1

name: h2o_feet

timeintegral
2019-08-18T00:00:00Z28.3590000000

MEAN()

Returns the arithmetic mean (average) of field values. MEAN() supports int64 and float64 field value data types.

Syntax

  1. SELECT MEAN( [ * | <field_key> | /<regular_expression>/ ] ) FROM_clause [WHERE_clause] [GROUP_BY_clause] [ORDER_BY_clause] [LIMIT_clause] [OFFSET_clause] [SLIMIT_clause] [SOFFSET_clause]

MEAN(field_key) Returns the average field value associated with the field key.

`MEAN(/regular_expression/)

Returns the average field value associated with each field key that matches the regular expression.

MEAN(*) Returns the average field value associated with each field key in the measurement.

Examples

Calculate the mean field value associated with a field key

Return the average field value in the water_level field key in the h2o_feet measurement.

  1. SELECT MEAN("water_level") FROM "h2o_feet"

name: h2o_feet

timemean
1970-01-01T00:00:00Z4.4418674882

Calculate the mean field value associated with each field key in a measurement

Return the average field value for every field key that stores numeric values in the h2o_feet measurement. The h2o_feet measurement has one numeric field: water_level.

  1. SELECT MEAN(*) FROM "h2o_feet"

name: h2o_feet

timemean_water_level
1970-01-01T00:00:00Z4.4418674882

Calculate the mean field value associated with each field key that matches a regular expression

Return the average field value for each field key that stores numeric values and includes the word water in the h2o_feet measurement.

  1. SELECT MEAN(/water/) FROM "h2o_feet"

name: h2o_feet

timemean_water_level
1970-01-01T00:00:00Z4.4418674882

Calculate the mean field value associated with a field key and include several clauses

Return the average of the values in the water_level field key in the time range between 2019-08-18T00:00:00Z and 2019-08-18T00:30:00Z and group results into 12-minute time intervals and per tag. Then fill empty time intervals with 9.01 and limit the number of points and series returned to seven and one.

  1. SELECT MEAN("water_level") FROM "h2o_feet" WHERE time >= '2019-08-18T00:00:00Z' AND time <= '2019-08-18T00:30:00Z' GROUP BY time(12m),* fill(9.01) LIMIT 7 SLIMIT 1

name: h2o_feet tags: location=coyote_creek

timemean
2019-08-18T00:00:00Z8.4615000000
2019-08-18T00:12:00Z8.2725000000
2019-08-18T00:24:00Z8.0710000000

MEDIAN()

Returns the middle value from a sorted list of field values. MEDIAN() supports int64 and float64 field value data types.

Note: MEDIAN() is nearly equivalent to PERCENTILE(field_key, 50), except MEDIAN() returns the average of the two middle field values if the field contains an even number of values.

Syntax

  1. SELECT MEDIAN( [ * | <field_key> | /<regular_expression>/ ] ) FROM_clause [WHERE_clause] [GROUP_BY_clause] [ORDER_BY_clause] [LIMIT_clause] [OFFSET_clause] [SLIMIT_clause] [SOFFSET_clause]

MEDIAN(field_key)

Returns the middle field value associated with the field key.

MEDIAN(/regular_expression/)

Returns the middle field value associated with each field key that matches the regular expression.

MEDIAN(*)

Returns the middle field value associated with each field key in the measurement.

Examples

Calculate the median field value associated with a field key

Return the middle field value in the water_level field key and in the h2o_feet measurement.

  1. SELECT MEDIAN("water_level") FROM "h2o_feet"

name: h2o_feet

timemedian
1970-01-01T00:00:00Z4.1240000000

Calculate the median field value associated with each field key in a measurement

Return the middle field value for every field key that stores numeric values in the h2o_feet measurement. The h2o_feet measurement has one numeric field: water_level.

  1. SELECT MEDIAN(*) FROM "h2o_feet"

name: h2o_feet

timemedian_water_level
1970-01-01T00:00:00Z4.1240000000

Calculate the median field value associated with each field key that matches a regular expression

Return the middle field value for every field key that stores numeric values and includes the word water in the h2o_feet measurement.

  1. SELECT MEDIAN(/water/) FROM "h2o_feet"

name: h2o_feet

timemedian_water_level
1970-01-01T00:00:00Z4.1240000000

Calculate the median field value associated with a field key and include several clauses

Return the middle field value in the water_level field key in the time range between 2019-08-18T00:00:00Z and 2019-08-18T00:30:00Z and group results into 12-minute time intervals and per tag. Then fill empty time intervals with 700 , limit the number of points and series returned to seven and one, and offset the series returned by one.

  1. SELECT MEDIAN("water_level") FROM "h2o_feet" WHERE time >= '2019-08-18T00:00:00Z' AND time <= '2019-08-18T00:30:00Z' GROUP BY time(12m),* fill(700) LIMIT 7 SLIMIT 1 SOFFSET 1

name: h2o_feet tags: location=santa_monica

timemedian
2019-08-18T00:00:00Z2.3655000000
2019-08-18T00:12:00Z2.3360000000
2019-08-18T00:24:00Z2.2655000000

MODE()

Returns the most frequent value in a list of field values. MODE() supports all field value data types.

Note: MODE() returns the field value with the earliest timestamp if there’s a tie between two or more values for the maximum number of occurrences.

Syntax

  1. SELECT MODE( [ * | <field_key> | /<regular_expression>/ ] ) FROM_clause [WHERE_clause] [GROUP_BY_clause] [ORDER_BY_clause] [LIMIT_clause] [OFFSET_clause] [SLIMIT_clause] [SOFFSET_clause]

MODE(field_key)

Returns the most frequent field value associated with the field key.

MODE(/regular_expression/)

Returns the most frequent field value associated with each field key that matches the regular expression.

MODE(*)

Returns the most frequent field value associated with each field key in the measurement.

Examples

Calculate the mode field value associated with a field key

Return the most frequent field value in the level description field key and in the h2o_feet measurement.

  1. SELECT MODE("level description") FROM "h2o_feet"

name: h2o_feet

timemode
1970-01-01T00:00:00Zbetween 3 and 6 feet

Calculate the mode field value associated with each field key in a measurement

Return the most frequent field value for every field key in the h2o_feet measurement. The h2o_feet measurement has two field keys: level description and water_level.

  1. SELECT MODE(*) FROM "h2o_feet"

name: h2o_feet

timemode_level descriptionmode_water_level
1970-01-01T00:00:00Zbetween 3 and 6 feet2.6900000000

Calculate the mode field value associated with each field key that matches a regular expression

Return the most frequent field value for every field key that includes the word /water/ in the h2o_feet measurement.

  1. SELECT MODE(/water/) FROM "h2o_feet"

name: h2o_feet

timemode_water_level
1970-01-01T00:00:00Z2.6900000000

Calculate the mode field value associated with a field key and include several clauses

Return the mode of the values associated with the water_level field key in the time range between 2019-08-18T00:00:00Z and 2019-08-18T00:30:00Z and group results into 12-minute time intervals and per tag. Then limits the number of points and series returned to three and one, and it [offsets](/influxdb/v2/query-data/influxql/explore-data #the-offset-and-soffset-clauses) the series returned by one.

  1. SELECT MODE("level description") FROM "h2o_feet" WHERE time >= '2019-08-18T00:00:00Z' AND time <= '2019-08-18T00:30:00Z' GROUP BY time(12m),* LIMIT 3 SLIMIT 1 SOFFSET 1

name: h2o_feet tags: location=santa_monica

timemode
2019-08-18T00:00:00Zbelow 3 feet
2019-08-18T00:12:00Zbelow 3 feet
2019-08-18T00:24:00Zbelow 3 feet

SPREAD()

Returns the difference between the minimum and maximum field values. SPREAD() supports int64 and float64 field value data types.

Syntax

  1. SELECT SPREAD( [ * | <field_key> | /<regular_expression>/ ] ) FROM_clause [WHERE_clause] [GROUP_BY_clause] [ORDER_BY_clause] [LIMIT_clause] [OFFSET_clause] [SLIMIT_clause] [SOFFSET_clause]

SPREAD(field_key)

Returns the difference between the minimum and maximum field values associated with the field key.

SPREAD(/regular_expression/)

Returns the difference between the minimum and maximum field values associated with each field key that matches the regular expression.

SPREAD(*)

Returns the difference between the minimum and maximum field values associated with each field key in the measurement.

Examples

Calculate the spread for the field values associated with a field key

Return the difference between the minimum and maximum field values in the water_level field key and in the h2o_feet measurement.

  1. SELECT SPREAD("water_level") FROM "h2o_feet"

name: h2o_feet

timespread
1970-01-01T00:00:00Z10.5740000000

Calculate the spread for the field values associated with each field key in a measurement

Return the difference between the minimum and maximum field values for every field key that stores numeric values in the h2o_feet measurement. The h2o_feet measurement has one numeric field: water_level.

  1. SELECT SPREAD(*) FROM "h2o_feet"

name: h2o_feet

timespread_water_level
1970-01-01T00:00:00Z10.5740000000

Calculate the spread for the field values associated with each field key that matches a regular expression

Return the difference between the minimum and maximum field values for every field key that stores numeric values and includes the word water in the h2o_feet measurement.

  1. SELECT SPREAD(/water/) FROM "h2o_feet"

name: h2o_feet

timespread_water_level
1970-01-01T00:00:00Z10.5740000000

Calculate the spread for the field values associated with a field key and include several clauses

Return the difference between the minimum and maximum field values in the water_level field key in the time range between 2019-08-18T00:00:00Z and 2019-08-18T00:30:00Z and group results into 12-minute time intervals and per tag. Then fill empty time intervals with 18, lim ts the number of points and series returned to three and one, and offsets the series returned by one.

  1. SELECT SPREAD("water_level") FROM "h2o_feet" WHERE time >= '2019-08-18T00:00:00Z' AND time <= '2019-08-18T00:30:00Z' GROUP BY time(12m),* fill(18) LIMIT 3 SLIMIT 1 SOFFSET 1

name: h2o_feet tags: location=santa_monica

timespread
2019-08-18T00:00:00Z0.0270000000
2019-08-18T00:12:00Z0.0140000000
2019-08-18T00:24:00Z0.0030000000

STDDEV()

Returns the standard deviation of field values. STDDEV() supports int64 and float64 field value data types.

Syntax

  1. SELECT STDDEV( [ * | <field_key> | /<regular_expression>/ ] ) FROM_clause [WHERE_clause] [GROUP_BY_clause] [ORDER_BY_clause] [LIMIT_clause] [OFFSET_clause] [SLIMIT_clause] [SOFFSET_clause]

STDDEV(field_key)

Returns the standard deviation of field values associated with the field key.

STDDEV(/regular_expression/)

Returns the standard deviation of field values associated with each field key that matches the regular expression.

STDDEV(*)

Returns the standard deviation of field values associated with each field key in the measurement.

Examples

Calculate the standard deviation for the field values associated with a field key

Return the standard deviation of the field values in the water_level field key and in the h2o_feet measurement.

  1. SELECT STDDEV("water_level") FROM "h2o_feet"

name: h2o_feet

timestddev
1970-01-01T00:00:00Z2.2789744110

Calculate the standard deviation for the field values associated with each field key in a measurement

Return the standard deviation of numeric fields in the h2o_feet measurement. The h2o_feet measurement has one numeric field: water_level.

  1. SELECT STDDEV(*) FROM "h2o_feet"

name: h2o_feet

timestddev_water_level
1970-01-01T00:00:00Z2.2789744110

Calculate the standard deviation for the field values associated with each field key that matches a regular expression

Return the standard deviation of numeric fields with water in the field key in the h2o_feet measurement.

  1. SELECT STDDEV(/water/) FROM "h2o_feet"

name: h2o_feet

timestddev_water_level
1970-01-01T00:00:00Z2.2789744110

Calculate the standard deviation for the field values associated with a field key and include several clauses

Return the standard deviation of the field values in the water_level field key in the time range between 2019-08-18T00:00:00Z and 2019-08-18T00:30:00Z and group results into 12-minute time intervals and per tag. Then fill empty time intervals with 18000, limit the number of points and series returned to two and one, and offsets the series returned by one.

  1. SELECT STDDEV("water_level") FROM "h2o_feet" WHERE time >= '2019-08-18T00:00:00Z' AND time <= '2019-08-18T00:30:00Z' GROUP BY time(12m),* fill(18000) LIMIT 2 SLIMIT 1 SOFFSET 1

name: h2o_feet tags: location=santa_monica

timestddev
2019-08-18T00:00:00Z0.0190918831
2019-08-18T00:12:00Z0.0098994949

SUM()

Returns the sum of field values. SUM() supports int64 and float64 field value data types.

Syntax

  1. SELECT SUM( [ * | <field_key> | /<regular_expression>/ ] ) FROM_clause [WHERE_clause] [GROUP_BY_clause] [ORDER_BY_clause] [LIMIT_clause] [OFFSET_clause] [SLIMIT_clause] [SOFFSET_clause]

SUM(field_key)

Returns the sum of field values associated with the field key.

SUM(/regular_expression/)

Returns the sum of field values associated with each field key that matches the regular expression.

SUM(*)

Returns the sums of field values associated with each field key in the measurement.

Examples

Calculate the sum of the field values associated with a field key

Return the summed total of the field values in the water_level field key and in the h2o_feet measurement.

  1. SELECT SUM("water_level") FROM "h2o_feet"

name: h2o_feet

timesum
1970-01-01T00:00:00Z271069.4053333958

Calculate the sum of the field values associated with each field key in a measurement

Return the summed total of numeric fields in the h2o_feet measurement. The h2o_feet measurement has one numeric field: water_level.

  1. SELECT SUM(*) FROM "h2o_feet"

name: h2o_feet

timesum_water_level
1970-01-01T00:00:00Z271069.4053333958

Calculate the sum of the field values associated with each field key that matches a regular expression

Return the summed total of numeric fields with water in the field key in the h2o_feet measurement.

  1. SELECT SUM(/water/) FROM "h2o_feet"

name: h2o_feet

timesum_water_level
1970-01-01T00:00:00Z271069.4053333958

Calculate the sum of the field values associated with a field key and include several clauses

Return the summed total of the field values in the water_level field key in the time range between 2019-08-18T00:00:00Z and 2019-08-18T00:30:00Z and group results into 12-minute time intervals and per tag. Then fill empty time intervals with 18000, and limit the number of points and series returned to four and one.

  1. SELECT SUM("water_level") FROM "h2o_feet" WHERE time >= '2019-08-18T00:00:00Z' AND time <= '2019-08-18T00:30:00Z' GROUP BY time(12m),* fill(18000) LIMIT 4 SLIMIT 1

name: h2o_feet tags: location=coyote_creek

timesum
2019-08-18T00:00:00Z16.9230000000
2019-08-18T00:12:00Z16.5450000000
2019-08-18T00:24:00Z16.1420000000