InfluxQL 聚合函数
使用聚合函数来评估、聚合和返回数据中的值。聚合函数返回一行,其中包含来自每个 InfluxQL 组的聚合值。
下面的每个聚合函数都涵盖了**语法**,包括传递给函数的参数,以及如何使用该函数的**示例**。示例使用 NOAA 水样数据。
COUNT()
返回非空字段值的数量。支持所有字段值数据类型。
语法
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
measurement 中 water_level
字段键的非空字段值的数量。
SELECT COUNT("water_level") FROM "h2o_feet"
time | count |
---|
1970-01-01T00:00:00Z | 61026.0000000000 |
计算 measurement 中每个字段的值
返回与 h2o_feet
measurement 关联的每个字段键的非空字段值的数量。h2o_feet
measurement 有两个字段键:level description
和 water_level
。
SELECT COUNT(*) FROM "h2o_feet"
time | count_level description | count_water_level |
---|
1970-01-01T00:00:00Z | 61026.0000000000 | 61026.0000000000 |
计算与正则表达式匹配的值
返回 h2o_feet
measurement 中每个包含单词 water
的字段键的非空字段值的数量。
SELECT COUNT(/water/) FROM "h2o_feet"
time | count_water_level |
---|
1970-01-01T00:00:00Z | 61026.0000000000 |
计算字段的非重复值
返回 level description
字段键和 h2o_feet
measurement 的唯一字段值的数量。InfluxQL 支持在 COUNT()
中嵌套 DISTINCT()。
SELECT COUNT(DISTINCT("level description")) FROM "h2o_feet"
time | count |
---|
1970-01-01T00:00:00Z | 4.0000000000 |
DISTINCT()
返回唯一字段值的列表。支持所有字段值数据类型。
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)
返回与字段键关联的唯一字段值。
示例
列出与字段键关联的非重复字段值
返回 h2o_feet
measurement 中 level description
字段键的唯一字段值的表格列表。
SELECT DISTINCT("level description") FROM "h2o_feet"
time | distinct |
---|
1970-01-01T00:00:00Z | between 6 and 9 feet |
1970-01-01T00:00:00Z | below 3 feet |
1970-01-01T00:00:00Z | between 3 and 6 feet |
1970-01-01T00:00:00Z | at or greater than 9 feet |
INTEGRAL()
返回后续字段值的曲线下面积。
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
参数是一个整数,后跟一个可选的持续时间字面量。如果查询未指定 unit
,则单位默认为一秒 (1s
)。
INTEGRAL(field_key)
返回与字段键关联的后续字段值的曲线下面积。
INTEGRAL(/regular_expression/)
返回与每个匹配正则表达式的字段键关联的后续字段值的曲线下面积。
INTEGRAL(*)
返回与measurement中每个字段键关联的平均字段值。
示例
以下示例使用 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'
time | water_level |
---|
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
measurement 中的字段值的曲线下面积(以秒为单位)。
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'
time | integral |
---|
1970-01-01T00:00:00Z | 4184.8200000000 |
计算与字段键关联的字段值的积分并指定 unit 选项
返回与 water_level
字段键关联且在 h2o_feet
measurement 中的字段值的曲线下面积(以分钟为单位)。
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'
time | integral |
---|
1970-01-01T00:00:00Z | 69.7470000000 |
计算 measurement 中与每个字段键关联的字段值的积分并指定 unit 选项
返回 h2o_feet
measurement 中存储数值的每个字段键关联的字段值的曲线下面积(以分钟为单位)。h2o_feet
measurement 有一个数值字段: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'
time | integral_water_level |
---|
1970-01-01T00:00:00Z | 69.7470000000 |
计算与匹配正则表达式的每个字段键关联的字段值的积分并指定 unit 选项
返回 h2o_feet
measurement 中每个存储数值且包含单词 water
的字段键关联的字段值的曲线下面积(以分钟为单位)。
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'
time | integral_water_level |
---|
1970-01-01T00:00:00Z | 69.7470000000 |
计算与字段键关联的字段值的积分并包含多个子句
返回 water_level
字段键关联且在 时间范围 2019-08-18T00:00:00Z
和 2019-08-18T00:30:00Z
之间的 h2o_feet
measurement 的曲线下面积(以分钟为单位),将结果分组为 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
time | integral |
---|
2019-08-18T00:00:00Z | 28.3590000000 |
MEAN()
返回字段值的算术平均值(平均值)。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(*)
返回与measurement中每个字段键关联的平均字段值。
示例
计算与字段键关联的平均字段值
返回 h2o_feet
measurement 中 water_level
字段键的平均字段值。
SELECT MEAN("water_level") FROM "h2o_feet"
time | mean |
---|
1970-01-01T00:00:00Z | 4.4418674882 |
计算 measurement 中与每个字段键关联的平均字段值
返回 h2o_feet
measurement 中每个存储数值的字段键的平均字段值。h2o_feet
measurement 有一个数值字段:water_level
。
SELECT MEAN(*) FROM "h2o_feet"
time | mean_water_level |
---|
1970-01-01T00:00:00Z | 4.4418674882 |
计算与匹配正则表达式的每个字段键关联的平均字段值
返回 h2o_feet
measurement 中每个存储数值且包含单词 water
的字段键的平均字段值。
SELECT MEAN(/water/) FROM "h2o_feet"
time | mean_water_level |
---|
1970-01-01T00:00:00Z | 4.4418674882 |
计算与字段键关联的平均字段值并包含多个子句
返回 时间范围 2019-08-18T00:00:00Z
和 2019-08-18T00:30:00Z
之间 water_level
字段键的值的平均值,并按 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
time | mean |
---|
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()
支持所有字段值数据类型。
注意: 如果两个或多个值的出现次数最多,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"
time | mode |
---|
1970-01-01T00:00:00Z | between 3 and 6 feet |
计算与测量中每个字段键关联的众数字段值
返回 h2o_feet
测量中每个字段键的最频繁的字段值。 h2o_feet
测量有两个字段键:level description
和 water_level
。
SELECT MODE(*) FROM "h2o_feet"
time | mode_level description | mode_water_level |
---|
1970-01-01T00:00:00Z | between 3 and 6 feet | 2.6900000000 |
计算与匹配正则表达式的每个字段键关联的众数字段值
返回 h2o_feet
测量中每个包含单词 /water/
的字段键的最频繁的字段值。
SELECT MODE(/water/) FROM "h2o_feet"
time | mode_water_level |
---|
1970-01-01T00:00:00Z | 2.6900000000 |
计算与字段键关联的众数字段值并包含多个子句
返回 water_level
字段键中介于 2019-08-18T00:00:00Z
和 2019-08-18T00:30:00Z
之间的时间范围内的与值相关的众数,并按 12 分钟的时间间隔和每个标签分组结果。然后将返回的点和序列数限制为三个和一个,并将其返回的序列偏移一个。
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
time | mode |
---|
2019-08-18T00:00:00Z | below 3 feet |
2019-08-18T00:12:00Z | below 3 feet |
2019-08-18T00:24:00Z | below 3 feet |
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"
time | spread |
---|
1970-01-01T00:00:00Z | 10.5740000000 |
计算与测量中每个字段键关联的字段值范围
返回 h2o_feet
测量中每个存储数值的字段键的最小和最大字段值之间的差值。 h2o_feet
测量有一个数字字段:water_level
。
SELECT SPREAD(*) FROM "h2o_feet"
time | spread_water_level |
---|
1970-01-01T00:00:00Z | 10.5740000000 |
计算与匹配正则表达式的每个字段键关联的字段值范围
返回 h2o_feet
测量中每个存储数值并包含单词 water
的字段键的最小和最大字段值之间的差值。
SELECT SPREAD(/water/) FROM "h2o_feet"
time | spread_water_level |
---|
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
time | spread |
---|
2019-08-18T00:00:00Z | 0.0270000000 |
2019-08-18T00:12:00Z | 0.0140000000 |
2019-08-18T00:24:00Z | 0.0030000000 |
STDDEV()
返回 字段值 的标准差。 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(*)
返回测量中每个字段键关联的字段值的标准差。
示例
计算与字段键关联的字段值的标准差
返回 water_level
字段键和 h2o_feet
测量中字段值的标准差。
SELECT STDDEV("water_level") FROM "h2o_feet"
time | stddev |
---|
1970-01-01T00:00:00Z | 2.2789744110 |
计算与测量中每个字段键关联的字段值的标准差
返回 h2o_feet
测量中数值字段的标准差。 h2o_feet
测量有一个数字字段:water_level
。
SELECT STDDEV(*) FROM "h2o_feet"
time | stddev_water_level |
---|
1970-01-01T00:00:00Z | 2.2789744110 |
计算与匹配正则表达式的每个字段键关联的字段值的标准差
返回 h2o_feet
测量中字段键中包含 water
的数值字段的标准差。
SELECT STDDEV(/water/) FROM "h2o_feet"
time | stddev_water_level |
---|
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
time | stddev |
---|
2019-08-18T00:00:00Z | 0.0190918831 |
2019-08-18T00:12:00Z | 0.0098994949 |
SUM()
返回 字段值 的总和。 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(*)
返回测量中每个字段键关联的字段值的总和。
示例
计算与字段键关联的字段值的总和
返回 water_level
字段键和 h2o_feet
测量中字段值的总和。
SELECT SUM("water_level") FROM "h2o_feet"
time | sum |
---|
1970-01-01T00:00:00Z | 271069.4053333958 |
计算与测量中每个字段键关联的字段值的总和
返回 h2o_feet
测量中数值字段的总和。 h2o_feet
测量有一个数字字段:water_level
。
SELECT SUM(*) FROM "h2o_feet"
time | sum_water_level |
---|
1970-01-01T00:00:00Z | 271069.4053333958 |
计算与匹配正则表达式的每个字段键关联的字段值的总和
返回 h2o_feet
测量中字段键中包含 water
的数值字段的总和。
SELECT SUM(/water/) FROM "h2o_feet"
time | sum_water_level |
---|
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
time | sum |
---|
2019-08-18T00:00:00Z | 16.9230000000 |
2019-08-18T00:12:00Z | 16.5450000000 |
2019-08-18T00:24:00Z | 16.1420000000 |
支持和反馈
感谢您成为我们社区的一份子!我们欢迎并鼓励您提供关于 InfluxDB 和此文档的反馈和错误报告。要寻求支持,请使用以下资源
拥有年度或支持合同的客户可以联系 InfluxData 支持。