InfluxQL 聚合函数
使用聚合函数来评估、聚合并返回数据中的值。聚合函数返回包含每个 InfluxQL 分组的聚合值的单行。
示例使用InfluxDB 入门教程中提供的示例数据集。
缺失的 InfluxQL 函数
一些 InfluxQL 函数正在重构以与 InfluxDB 3.0 存储引擎一起工作。如果您需要的函数在这里没有,请检查InfluxQL 特性支持页面以获取更多信息。
COUNT()
返回非空字段值的数量。
参数
- field_expression: 用于标识要操作的某个或多个字段的表达式。可以是字段键、常量、正则表达式或通配符(
*
)。支持所有字段类型。
示例
计算字段中非空值的数量
SELECT COUNT(temp) FROM home
time | count |
---|
1970-01-01T00:00:00Z | 26 |
计算每个字段中非空值的数量
SELECT COUNT(*) FROM home
time | count_co | count_hum | count_temp |
---|
1970-01-01T00:00:00Z | 26 | 26 | 26 |
统计字段中与正则表达式匹配的字段键的非空值数量
SELECT COUNT(/^[th]/) FROM home
time | count_hum | count_temp |
---|
1970-01-01T00:00:00Z | 26 | 26 |
统计字段的唯一值数量
InfluxQL 支持在 COUNT()
中嵌套 DISTINCT()
。
SELECT COUNT(DISTINCT(co)) FROM home
time | count |
---|
1970-01-01T00:00:00Z | 12 |
统计时间窗口内(按时间分组)的非空字段值数量
SELECT
COUNT(temp)
FROM home
WHERE
room = 'Kitchen'
AND time >= '2022-01-01T08:00:00Z'
AND time <= '2022-01-01T20:00:00Z'
GROUP BY time(6h)
time | count |
---|
2022-01-01T06:00:00Z | 4 |
2022-01-01T12:00:00Z | 6 |
2022-01-01T18:00:00Z | 3 |
DISTINCT()
返回唯一 字段值 的列表。
参数
- field_key: 返回唯一值的字段键。支持所有字段类型。
显著行为
- InfluxQL 支持将
DISTINCT()
与 COUNT()
嵌套。
示例
列出唯一字段值
SELECT DISTINCT(co) FROM home
time | distinct |
---|
1970-01-01T00:00:00Z | 0 |
1970-01-01T00:00:00Z | 1 |
1970-01-01T00:00:00Z | 3 |
1970-01-01T00:00:00Z | 4 |
1970-01-01T00:00:00Z | 7 |
1970-01-01T00:00:00Z | 5 |
1970-01-01T00:00:00Z | 9 |
1970-01-01T00:00:00Z | 18 |
1970-01-01T00:00:00Z | 14 |
1970-01-01T00:00:00Z | 22 |
1970-01-01T00:00:00Z | 17 |
1970-01-01T00:00:00Z | 26 |
MEAN()
返回 字段值 的算术平均值(平均值)。
参数
- field_expression: 识别一个或多个要操作的字段的表达式。可以是 字段键、常量、正则表达式或通配符(
*
)。支持 数值字段。
示例
计算字段的平均值
SELECT MEAN(temp) FROM home
time | mean |
---|
1970-01-01T00:00:00Z | 22.396153846153844 |
计算每个字段的平均值
time | mean_co | mean_hum | mean_temp |
---|
1970-01-01T00:00:00Z | 5.269230769230769 | 36.15 | 22.396153846153844 |
计算字段键匹配正则表达式的字段的平均值
SELECT MEAN(/^[th]/) FROM home
time | mean_hum | mean_temp |
---|
1970-01-01T00:00:00Z | 36.15 | 22.396153846153844 |
计算时间窗口内(按时间分组)字段的平均值
SELECT
MEAN(temp)
FROM home
WHERE
room = 'Kitchen'
AND time >= '2022-01-01T08:00:00Z'
AND time <= '2022-01-01T20:00:00Z'
GROUP BY time(6h)
time | mean |
---|
2022-01-01T06:00:00Z | 22.275 |
2022-01-01T12:00:00Z | 22.649999999999995 |
2022-01-01T18:00:00Z | 23.033333333333335 |
从排序的 字段值 列表中返回中间值。
参数
- field_expression: 识别一个或多个要操作的字段的表达式。可以是 字段键、常量、正则表达式或通配符(
*
)。支持 数值字段。
显著行为
示例
MODE()
返回 字段值 列表中最频繁的值。
参数
- field_expression: 用于标识要操作的某个或多个字段的表达式。可以是字段键、常量、正则表达式或通配符(
*
)。支持所有字段类型。
显著行为
MODE()
在两个或多个值具有最大出现次数相同时,返回具有最早 时间戳 的字段值。
示例
计算字段的众数值
SELECT MODE(co) FROM home
time | mode |
---|
1970-01-01T00:00:00Z | 0 |
计算每个字段的众数值
time | mode_co | mode_hum | mode_temp |
---|
1970-01-01T00:00:00Z | 0 | 36 | 22.7 |
计算匹配正则表达式的字段键的众数
SELECT MODE(/^[th]/) FROM home
time | mode_hum | mode_temp |
---|
1970-01-01T00:00:00Z | 36 | 22.7 |
计算时间窗口内(按时间分组)字段的众数
SELECT
MODE(co)
FROM home
WHERE
room = 'Kitchen'
AND time >= '2022-01-01T08:00:00Z'
AND time <= '2022-01-01T20:00:00Z'
GROUP BY time(6h)
time | mode |
---|
2022-01-01T06:00:00Z | 0 |
2022-01-01T12:00:00Z | 1 |
2022-01-01T18:00:00Z | 18 |
SPREAD()
返回 字段值 最小值和最大值之间的差。
参数
- field_expression: 识别一个或多个要操作的字段的表达式。可以是 字段键、常量、正则表达式或通配符(
*
)。支持 数值字段。
示例
计算字段的分布范围
SELECT SPREAD(temp) FROM home
time | spread |
---|
1970-01-01T00:00:00Z | 2.3000000000000007 |
计算每个字段的分布范围
SELECT SPREAD(*) FROM home
time | spread_co | spread_hum | spread_temp |
---|
1970-01-01T00:00:00Z | 26 | 1 | 2.3000000000000007 |
计算匹配正则表达式的字段键的分布范围
SELECT SPREAD(/^[th]/) FROM home
time | spread_hum | spread_temp |
---|
1970-01-01T00:00:00Z | 1 | 2.3000000000000007 |
计算时间窗口内(按时间分组)字段的分布范围
SELECT
SPREAD(co)
FROM home
WHERE
room = 'Kitchen'
AND time >= '2022-01-01T08:00:00Z'
AND time <= '2022-01-01T20:00:00Z'
GROUP BY time(6h)
time | spread |
---|
2022-01-01T06:00:00Z | 0 |
2022-01-01T12:00:00Z | 9 |
2022-01-01T18:00:00Z | 8 |
STDDEV()
返回字段值的标准差。
参数
- field_expression: 识别一个或多个要操作的字段的表达式。可以是 字段键、常量、正则表达式或通配符(
*
)。支持 数值字段。
示例
计算字段的平均值
SELECT STDDEV(temp) FROM home
time | stddev |
---|
1970-01-01T00:00:00Z | 0.5553238833191091 |
计算每个字段的标准差
SELECT STDDEV(*) FROM home
time | stddev_co | stddev_hum | stddev_temp |
---|
1970-01-01T00:00:00Z | 7.774613519951676 | 0.25495097567963926 | 0.5553238833191091 |
计算与正则表达式匹配的字段键的标准差
SELECT STDDEV(/^[th]/) FROM home
time | stddev_hum | stddev_temp |
---|
1970-01-01T00:00:00Z | 0.25495097567963926 | 0.5553238833191091 |
计算时间窗口内(按时间分组)的字段的标准差
SELECT
STDDEV(co)
FROM home
WHERE
room = 'Kitchen'
AND time >= '2022-01-01T08:00:00Z'
AND time <= '2022-01-01T20:00:00Z'
GROUP BY time(6h)
time | stddev |
---|
2022-01-01T06:00:00Z | 0 |
2022-01-01T12:00:00Z | 3.6742346141747673 |
2022-01-01T18:00:00Z | 4 |
SUM()
返回字段值的总和。
参数
- field_expression: 识别一个或多个要操作的字段的表达式。可以是 字段键、常量、正则表达式或通配符(
*
)。支持 数值字段。
示例
计算字段值的总和
time | sum |
---|
1970-01-01T00:00:00Z | 137 |
计算每个字段值的总和
time | sum_co | sum_hum | sum_temp |
---|
1970-01-01T00:00:00Z | 137 | 939.9 | 582.3 |
计算与正则表达式匹配的字段键值的总和
SELECT SUM(/^[th]/) FROM home
time | sum_hum | sum_temp |
---|
1970-01-01T00:00:00Z | 939.9 | 582.3 |
计算时间窗口内(按时间分组)的字段值的总和
SELECT
SUM(co)
FROM home
WHERE
room = 'Kitchen'
AND time >= '2022-01-01T08:00:00Z'
AND time <= '2022-01-01T20:00:00Z'
GROUP BY time(6h)
time | sum |
---|
2022-01-01T06:00:00Z | 0 |
2022-01-01T12:00:00Z | 21 |
2022-01-01T18:00:00Z | 66 |
支持和反馈
感谢您成为我们社区的一员!我们欢迎并鼓励您对InfluxDB和此文档的反馈和错误报告。要获取支持,请使用以下资源
拥有年度或支持合同的客户可以通过联系InfluxData支持。