InfluxQL 聚合函数
InfluxDB 3 Core 处于公开 Alpha 阶段
InfluxDB 3 Core 处于公开 alpha 阶段,可用于测试和反馈,但不适合生产环境使用。产品和本文档都在不断完善中。我们欢迎并鼓励您提供关于 Alpha 体验的反馈,并邀请您加入我们的公开渠道以获取更新和分享反馈。
Alpha 预期和建议
- 在 alpha 期间,我们可能会进行破坏性更改,这可能需要您删除数据并重新开始。如果您使用的数据很重要,请在其他地方保留备份副本。
- 在 alpha 期间,我们在每次合并到 InfluxDB
main
分支时都会生成新的构建版本。更改频繁,相关更新会发布到我们的公开渠道。
使用聚合函数来评估、聚合和返回数据中的值。聚合函数返回一行,其中包含来自每个 InfluxQL 组的聚合值。
示例使用InfluxDB 入门教程中提供的示例数据集。
缺少 InfluxQL 函数
某些 InfluxQL 函数正在重新架构中,以与 InfluxDB 3 存储引擎一起工作。如果您需要的函数不在此处,请查看InfluxQL 功能支持页面以获取更多信息。
COUNT()
返回非空字段值的数量。
参数
- field_expression:用于标识要操作的一个或多个字段的表达式。可以是字段键、常量、正则表达式或通配符 (
*
)。支持所有字段类型。
示例
计算字段中非空值的数量
SELECT COUNT(temp) FROM home
时间 | 计数 |
---|
1970-01-01T00:00:00Z | 26 |
计算每个字段中非空值的数量
SELECT COUNT(*) FROM home
时间 | count_co | count_hum | count_temp |
---|
1970-01-01T00:00:00Z | 26 | 26 | 26 |
计算字段键与正则表达式匹配的字段中非空值的数量
SELECT COUNT(/^[th]/) FROM home
时间 | count_hum | count_temp |
---|
1970-01-01T00:00:00Z | 26 | 26 |
计算字段的非重复值
InfluxQL 支持在 COUNT()
中嵌套 DISTINCT()
。
SELECT COUNT(DISTINCT(co)) FROM home
时间 | 计数 |
---|
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)
时间 | 计数 |
---|
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
时间 | 非重复值 |
---|
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
时间 | 平均值 |
---|
1970-01-01T00:00:00Z | 22.396153846153844 |
计算每个字段的平均值
时间 | mean_co | mean_hum | mean_temp |
---|
1970-01-01T00:00:00Z | 5.269230769230769 | 36.15 | 22.396153846153844 |
计算字段键与正则表达式匹配的字段的平均值
SELECT MEAN(/^[th]/) FROM home
时间 | 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)
时间 | 平均值 |
---|
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
时间 | 众数 |
---|
1970-01-01T00:00:00Z | 0 |
计算每个字段的众数
时间 | mode_co | mode_hum | mode_temp |
---|
1970-01-01T00:00:00Z | 0 | 36 | 22.7 |
计算与正则表达式匹配的字段键的众数
SELECT MODE(/^[th]/) FROM home
时间 | 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)
时间 | 众数 |
---|
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
时间 | 范围 |
---|
1970-01-01T00:00:00Z | 2.3000000000000007 |
计算每个字段的范围
SELECT SPREAD(*) FROM home
时间 | spread_co | spread_hum | spread_temp |
---|
1970-01-01T00:00:00Z | 26 | 1 | 2.3000000000000007 |
计算与正则表达式匹配的字段键的范围
SELECT SPREAD(/^[th]/) FROM home
时间 | 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)
时间 | 范围 |
---|
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
时间 | 标准差 |
---|
1970-01-01T00:00:00Z | 0.5553238833191091 |
计算每个字段的标准差
SELECT STDDEV(*) FROM home
时间 | stddev_co | stddev_hum | stddev_temp |
---|
1970-01-01T00:00:00Z | 7.774613519951676 | 0.25495097567963926 | 0.5553238833191091 |
计算字段键与正则表达式匹配的字段的标准差
SELECT STDDEV(/^[th]/) FROM home
时间 | 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)
时间 | 标准差 |
---|
2022-01-01T06:00:00Z | 0 |
2022-01-01T12:00:00Z | 3.6742346141747673 |
2022-01-01T18:00:00Z | 4 |
SUM()
返回字段值的总和。
参数
- field_expression:用于标识要操作的一个或多个字段的表达式。可以是字段键、常量、正则表达式或通配符 (
*
)。支持数值字段。
示例
计算字段中值的总和
时间 | 总和 |
---|
1970-01-01T00:00:00Z | 137 |
计算每个字段中值的总和
时间 | sum_co | sum_hum | sum_temp |
---|
1970-01-01T00:00:00Z | 137 | 939.9 | 582.3 |
计算字段键与正则表达式匹配的字段的值的总和
SELECT SUM(/^[th]/) FROM home
时间 | 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)
时间 | 总和 |
---|
2022-01-01T06:00:00Z | 0 |
2022-01-01T12:00:00Z | 21 |
2022-01-01T18:00:00Z | 66 |
支持与反馈
感谢您成为我们社区的一份子!我们欢迎并鼓励您提供关于 InfluxDB 3 Core 和本文档的反馈和错误报告。要获得支持,请使用以下资源
拥有年度合同或支持合同的客户可以联系 InfluxData 支持。