InfluxQL 聚合函数
使用聚合函数来评估、汇总和返回数据中的值。 聚合函数返回一行,包含每个 InfluxQL 组的聚合值。
下面的每个聚合函数涵盖了 语法 包括传递给函数的参数,以及 如何使用该函数的示例。示例使用 NOAA 水样数据。
计数()
返回非空的 字段值 的数量。支持所有字段值 数据类型。
语法
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(*)
返回与每个字段键关联的字段值的数量,位于measurement中。
COUNT(field_key)
返回与字段关键字相关联的字段值的数量。
COUNT(/regular_expression/)
返回与每个字段键匹配的字段值数量,该字段键符合正则表达式。
示例
计算字段的值
返回h2o_feet测量中water_level字段键的非空字段值的数量。
SELECT COUNT("water_level") FROM "h2o_feet"
| 时间 | 计数 |
|---|
| 1970-01-01T00:00:00Z | 61026.0000000000 |
计算测量中每个字段的值
返回与h2o_feet测量相关的每个字段键的非空字段值的数量。h2o_feet测量有两个字段键:level description和water_level。
SELECT COUNT(*) FROM "h2o_feet"
| 时间 | 计数级别描述 | 水位计数 |
|---|
| 1970-01-01T00:00:00Z | 61026.0000000000 | 61026.0000000000 |
计算匹配正则表达式的值
返回每个字段键中包含单词 water 的 h2o_feet 测量的非空字段值的数量。
SELECT COUNT(/water/) FROM "h2o_feet"
| 时间 | 水位计数 |
|---|
| 1970-01-01T00:00:00Z | 61026.0000000000 |
计算字段的不同值
返回 level description 字段键和 h2o_feet 测量的唯一字段值的数量。InfluxQL 支持在 DISTINCT() 中嵌套 COUNT()。
SELECT COUNT(DISTINCT("level description")) FROM "h2o_feet"
| 时间 | 计数 |
|---|
| 1970-01-01T00:00:00Z | 4.0000000000 |
不重复()
返回唯一的 字段值 列表。支持所有字段值 数据类型。
InfluxQL 支持将 DISTINCT() 嵌套在 COUNT() 中。
语法
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)
返回与 field key 相关的唯一字段值。
示例
列出与字段键关联的不同字段值
返回h2o_feet测量中level description字段键的唯一字段值的表格列表。
SELECT DISTINCT("level description") FROM "h2o_feet"
| 时间 | 不同的 |
|---|
| 1970-01-01T00:00:00Z | 在6到9英尺之间 |
| 1970-01-01T00:00:00Z | 低于3英尺 |
| 1970-01-01T00:00:00Z | 在3到6英尺之间 |
| 1970-01-01T00:00:00Z | 大于或等于9英尺 |
积分()
返回后续 字段值 下的曲线面积。
INTEGRAL() 不支持 fill()。INTEGRAL() 支持 int64 和 float64 字段值 数据类型。
语法
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 计算后续字段值的曲线下面积,并将这些结果转换为每个 unit 的总面积。
unit 参数是一个整数,可以后跟一个可选的 duration literal。
如果查询没有指定 unit,则单位默认为一秒 (1s)。
INTEGRAL(field_key)
返回与字段键相关联的后续字段值下的曲线面积。
INTEGRAL(/regular_expression/)
返回与匹配正则表达式的每个字段键相关联的后续字段值的曲线下的面积。
INTEGRAL(*)
返回与测量中每个字段键相关联的平均字段值。
示例
以下示例使用NOAA水样本数据数据的一个子集:
SELECT "water_level" FROM "h2o_feet" WHERE "location" = 'santa_monica' AND time >= '2019-08-18T00:00:00Z' AND time <= '2019-08-18T00:30:00Z'
| 时间 | 水位 |
|---|
| 2019-08-18T00:00:00Z | 2.3520000000 |
| 2019-08-18T00:06:00Z | 2.3790000000 |
| 2019-08-18T00:12:00Z | 2.3430000000 |
| 2019-08-18T00:18:00Z | 2.3290000000 |
| 2019-08-18T00:24:00Z | 2.2640000000 |
| 2019-08-18T00:30:00Z | 2.2670000000 |
计算与字段键相关的字段值的积分
返回与 water_level 字段键和 h2o_feet 测量相关的字段值下的曲线面积(以秒为单位)。
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'
| 时间 | 积分 |
|---|
| 1970-01-01T00:00:00Z | 4184.8200000000 |
计算与字段键关联的字段值的积分并指定单位选项
返回与 water_level 字段键关联的字段值下的曲线面积(以分钟为单位),以及在 h2o_feet 测量中。
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'
| 时间 | 积分 |
|---|
| 1970-01-01T00:00:00Z | 69.7470000000 |
计算与测量中每个字段键相关的字段值的积分,并指定单位选项
返回与每个存储数字值的字段键相关的曲线下的面积(以分钟为单位),该字段值存储在h2o_feet测量中。h2o_feet测量有一个数字字段:water_level。
SELECT INTEGRAL(*,1m) FROM "h2o_feet" WHERE "location" = 'santa_monica' AND time >= '2019-08-18T00:00:00Z' AND time <= '2019-08-18T00:30:00Z'
| 时间 | 积分水位 |
|---|
| 1970-01-01T00:00:00Z | 69.7470000000 |
计算与每个字段键相关的场字段值的积分,这些键匹配一个正则表达式,并指定单位选项
返回与每个存储数值的字段键相关的曲线下的面积(以分钟为单位),这些字段值包含单词 water 在 h2o_feet 测量中。
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'
| 时间 | 积分水位 |
|---|
| 1970-01-01T00:00:00Z | 69.7470000000 |
计算与字段关键字相关的字段值的积分并包含多个子句
返回与 water_level 字段键相关的字段值在 h2o_feet 测量中曲线下的面积(单位为分钟),在 时间范围 从 2019-08-18T00:00:00Z 到 2019-08-18T00:30:00Z,分组 结果为12分钟间隔,并且 限制 返回的结果数量为一。
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
| 时间 | 积分 |
|---|
| 2019年08月18日T00:00:00Z | 28.3590000000 |
均值()
返回字段值的算术平均值(平均值)。MEAN() 支持 int64 和 float64 字段值数据类型。
语法
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)
返回与字段键相关联的平均字段值。
`MEAN(/regular_expression/)
返回与匹配正则表达式的每个字段键相关联的平均字段值。
MEAN(*)
返回与测量中每个字段键相关联的平均字段值。
示例
计算与字段键相关的均场值
返回h2o_feet测量中water_level字段键的平均字段值。
SELECT MEAN("water_level") FROM "h2o_feet"
| 时间 | 平均值 |
|---|
| 1970-01-01T00:00:00Z | 4.4418674882 |
计算与测量中每个字段键相关的均值场值
返回存储数值的每个字段键的平均字段值
在 h2o_feet 测量中。
h2o_feet 测量有一个数值字段:water_level。
SELECT MEAN(*) FROM "h2o_feet"
| 时间 | 平均水位 |
|---|
| 1970-01-01T00:00:00Z | 4.4418674882 |
计算与匹配正则表达式的每个字段键相关的均值场值
返回每个存储数值的字段键的平均字段值,并且在h2o_feet测量中包含单词water。
SELECT MEAN(/water/) FROM "h2o_feet"
| 时间 | 平均水位 |
|---|
| 1970-01-01T00:00:00Z | 4.4418674882 |
计算与字段键相关的平均字段值,并包含多个子句
返回时间范围内水位字段键中值的平均值,介于2019-08-18T00:00:00Z和2019-08-18T00:30:00Z之间,并将结果按每个标签进行12分钟的时间间隔分组。然后填充空的时间间隔,使用9.01,并限制返回的点和序列的数量为七个和一个。
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
| 时间 | 平均值 |
|---|
| 2019-08-18T00:00:00Z | 8.4615000000 |
| 2019-08-18T00:12:00Z | 8.2725000000 |
| 2019-08-18T00:24:00Z | 8.0710000000 |
从排序后的字段值列表中返回中间值。 MEDIAN() 支持 int64 和 float64 字段值数据类型。
语法
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)
返回与字段键相关联的中间字段值。
MEDIAN(/regular_expression/)
返回与匹配正则表达式的每个字段键相关联的中间字段值。
MEDIAN(*)
返回与每个字段键相关联的中间字段值,在measurement中。
示例
模式()
返回一组字段值中出现最频繁的值。 MODE()支持所有字段值数据类型。
注意: MODE() 如果存在两个或更多值的最大出现次数相同,则返回具有最早时间戳的字段值。
语法
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)
返回与字段键关联的最频繁的字段值。
MODE(/regular_expression/)
返回与每个字段键匹配的 正则表达式 相关联的最频繁字段值。
MODE(*)
返回与每个字段键相关联的最频繁字段值。
示例
计算与字段键关联的众数字段值
返回 level description 字段键和 h2o_feet 测量中最频繁的字段值。
SELECT MODE("level description") FROM "h2o_feet"
| 时间 | 模式 |
|---|
| 1970-01-01T00:00:00Z | 在3到6英尺之间 |
计算每个字段键在测量中关联的众数字段值
返回每个字段键的最频繁字段值在 h2o_feet 测量中。
h2o_feet 测量具有两个字段键: level description 和 water_level。
SELECT MODE(*) FROM "h2o_feet"
| 时间 | 模式级别描述 | 模式水位 |
|---|
| 1970-01-01T00:00:00Z | 在3到6英尺之间 | 2.6900000000 |
计算与匹配正则表达式的每个字段键关联的众数字段值
返回每个字段键中包含单词 /water/ 的 h2o_feet 测量值最频繁的字段值。
SELECT MODE(/water/) FROM "h2o_feet"
| 时间 | 水位模式 |
|---|
| 1970-01-01T00:00:00Z | 2.6900000000 |
计算与字段键关联的众数字段值并包含多个子句
返回与 water_level 字段键相关的值的众数,在时间范围 2019-08-18T00:00:00Z 和 2019-08-18T00:30:00Z 之间,并分组结果为12分钟的时间间隔和每个标签。然后限制返回的点和系列数量为三和一,并且它 [偏移](/influxdb/cloud/query-data/influxql/explore-data #the-offset-and-soffset-clauses) 返回的系列为一个。
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
| 时间 | 模式 |
|---|
| 2019-08-18T00:00:00Z | 低于3英尺 |
| 2019-08-18T00:12:00Z | 低于3英尺 |
| 2019-08-18T00:24:00Z | 低于 3 英尺 |
SPREAD()
返回最小和最大字段值之间的差异。SPREAD() 支持 int64 和 float64 字段值数据类型。
语法
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)
返回与字段键相关联的最小和最大字段值之间的差值。
SPREAD(/regular_expression/)
返回与匹配正则表达式的每个字段键相关联的最小和最大字段值之间的差异。
SPREAD(*)
返回与每个字段键相关联的最小和最大字段值之间的差异。
示例
计算与字段键相关的字段值的差异
返回water_level字段键和h2o_feet测量中最小和最大字段值之间的差异。
SELECT SPREAD("water_level") FROM "h2o_feet"
| 时间 | 差价 |
|---|
| 1970-01-01T00:00:00Z | 10.5740000000 |
计算与测量中每个字段键关联的字段值的范围
返回每个存储数值的字段键的最小值和最大值之间的差异,适用于h2o_feet测量。h2o_feet测量包含一个数值字段:water_level。
SELECT SPREAD(*) FROM "h2o_feet"
| 时间 | 水位差 |
|---|
| 1970-01-01T00:00:00Z | 10.5740000000 |
计算与匹配正则表达式的每个字段键相关的字段值的差异
返回每个存储数值且在h2o_feet测量中包含单词water的字段键的最小和最大字段值之间的差异。
SELECT SPREAD(/water/) FROM "h2o_feet"
| 时间 | 水位差 |
|---|
| 1970-01-01T00:00:00Z | 10.5740000000 |
计算与字段键相关的字段值的差异,并包含几个条件
返回在时间范围内的water_level字段键的最小值和最大值之间的差值,介于2019-08-18T00:00:00Z和2019-08-18T00:30:00Z之间,并对结果进行分组,以12分钟的时间间隔和每个标签进行分组。然后填充空白时间间隔为18,限制返回的点数和序列为三和一,并且偏移返回的序列为一。
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
| 时间 | 差价 |
|---|
| 2019-08-18T00:00:00Z | 0.0270000000 |
| 2019-08-18T00:12:00Z | 0.0140000000 |
| 2019-08-18T00:24:00Z | 0.0030000000 |
标准差()
返回 字段值 的标准差。 STDDEV() 支持 int64 和 float64 字段值 数据类型。
语法
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)
返回与字段关键字相关的字段值的标准差。
STDDEV(/regular_expression/)
返回与匹配正则表达式的每个字段键相关联的字段值的标准偏差。
STDDEV(*)
返回与measurement中每个字段键相关联的字段值的标准偏差。
示例
计算与字段键相关的字段值的标准差
返回water_level字段键和h2o_feet测量中的字段值的标准偏差。
SELECT STDDEV("water_level") FROM "h2o_feet"
| 时间 | 标准差 |
|---|
| 1970-01-01T00:00:00Z | 2.2789744110 |
计算每个字段键相关的字段值的标准偏差
返回 h2o_feet 测量中数值字段的标准偏差。
h2o_feet 测量中有一个数值字段:water_level。
SELECT STDDEV(*) FROM "h2o_feet"
| 时间 | 水位标准差 |
|---|
| 1970-01-01T00:00:00Z | 2.2789744110 |
计算与匹配正则表达式的每个字段键相关的字段值的标准偏差
返回字段键中包含 water 的数值字段的标准差,在 h2o_feet 测量中。
SELECT STDDEV(/water/) FROM "h2o_feet"
| 时间 | 水位标准差 |
|---|
| 1970-01-01T00:00:00Z | 2.2789744110 |
计算与字段键关联的字段值的标准差并包含多个子句
返回时间范围内water_level字段键的字段值的标准差,介于2019-08-18T00:00:00Z和2019-08-18T00:30:00Z之间,并分组结果为12分钟的时间间隔和每个标签。然后填充空的时间间隔为18000,限制返回的点和系列数量为两个和一个,并偏移返回的系列一个。
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
| 时间 | 标准差 |
|---|
| 2019-08-18T00:00:00Z | 0.0190918831 |
| 2019-08-18T00:12:00Z | 0.0098994949 |
求和()
返回 字段值 的总和。 SUM() 支持 int64 和 float64 字段值 数据类型。
语法
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)
返回与字段键相关联的字段值的总和。
SUM(/regular_expression/)
返回与每个字段键匹配的正则表达式相关联的字段值的总和。
SUM(*)
返回与measurement中每个字段键相关联的字段值的总和。
示例
计算与字段键相关联的字段值的总和
返回water_level字段键和h2o_feet测量中的字段值的总和。
SELECT SUM("water_level") FROM "h2o_feet"
| 时间 | 总计 |
|---|
| 1970-01-01T00:00:00Z | 271069.4053333958 |
计算测量中与每个字段键相关联的字段值的总和
返回 h2o_feet 测量中数值字段的总和。
h2o_feet 测量有一个数值字段: water_level。
SELECT SUM(*) FROM "h2o_feet"
| 时间 | 水位总和 |
|---|
| 1970-01-01T00:00:00Z | 271069.4053333958 |
计算与每个字段键匹配的正则表达式相关联的字段值的总和
返回字段键中包含 water 的数值字段的总和,单位为 h2o_feet 测量。
SELECT SUM(/water/) FROM "h2o_feet"
| 时间 | 水位总和 |
|---|
| 1970-01-01T00:00:00Z | 271069.4053333958 |
计算与字段键相关联的字段值的总和,并包括几个子句
返回在 water_level 字段键中的字段值的总和
时间范围
在 2019-08-18T00:00:00Z 和 2019-08-18T00:30:00Z 之间,并且
按
每 12 分钟的时间间隔和每个标签进行分组。
然后 填充
空的时间间隔为 18000,并 限制
返回的点和系列的数量为四和一个。
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
| 时间 | 总计 |
|---|
| 2019-08-18T00:00:00Z | 16.9230000000 |
| 2019-08-18T00:12:00Z | 16.5450000000 |
| 2019-08-18T00:24:00Z | 16.1420000000 |