InfluxQL 聚合函数
InfluxDB 3核心正在进行公开测试
InfluxDB 3 Core 正在进行公开 alpha 测试,并可供测试和反馈,但不适合用于生产环境。产品和本文件都是进行中的工作。我们欢迎并鼓励您分享您对 alpha 版本的体验,并邀请您加入我们的公共频道以获取更新和分享反馈。
阿尔法预期和建议
- 在 alpha 期间,我们可能会进行重大更改,这需要您删除您的数据并重新开始。如果您使用的数据很重要,请在其他地方保存备份副本。
- 在 alpha 期间,我们在每次合并到 InfluxDB
main 分支时生成新构建。更改频繁,相关更新会发布到我们的公共频道。
使用聚合函数来评估、汇总和返回数据中的值。 聚合函数返回一行,包含每个 InfluxQL 组的聚合值。
示例使用的是提供的示例数据集,详见
开始使用InfluxDB教程.
缺失的InfluxQL函数
一些 InfluxQL 函数正在重新架构以与 InfluxDB 3 存储引擎配合使用。如果您需要的函数不在这里,请查看 InfluxQL 功能支持页面 以获取更多信息。
计数()
返回非空的 字段值 的数量。
参数
- field_expression: 用于识别一个或多个字段以进行操作的表达式。 可以是一个field key,常量,正则表达式或通配符(
*)。 支持所有字段类型。
示例
计算字段中非空值的数量
SELECT COUNT(temp) FROM home
| 时间 | 计数 |
|---|
| 1970-01-01T00:00:00Z | 26 |
计算每个字段中非空值的数量
SELECT COUNT(*) FROM home
| 时间 | 一氧化碳计数 | 湿度计数 | 温度计数 |
|---|
| 1970-01-01T00:00:00Z | 26 | 26 | 26 |
计算在字段键与正则表达式匹配的情况下非空值的数量
SELECT COUNT(/^[th]/) FROM home
| 时间 | 湿度计数 | 温度计数 |
|---|
| 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 |
不重复()
返回唯一的 字段值 列表。
参数
- 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 |
均值()
返回字段值的算术平均值(平均数)。
参数
- field_expression: 表达式,用于识别一个或多个要操作的字段。可以是字段键,常量,正则表达式或通配符 (
*)。支持数值字段。
示例
计算字段的平均值
SELECT MEAN(temp) FROM home
| 时间 | 平均值 |
|---|
| 1970-01-01T00:00:00Z | 22.396153846153844 |
计算每个字段的平均值
| 时间 | 平均二氧化碳浓度 | 平均湿度 | 平均温度 |
|---|
| 1970-01-01T00:00:00Z | 5.269230769230769 | 36.15 | 22.396153846153844 |
计算字段键符合正则表达式的字段的平均值
SELECT MEAN(/^[th]/) FROM home
| 时间 | 平均湿度 | 平均温度 |
|---|
| 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: 用于识别一个或多个要操作的字段的表达式。可以是字段键,常量,正则表达式或通配符(
*)。支持数字字段。
显著行为
示例
模式()
返回列表中最频繁的值
字段值。
参数
- field_expression: 用于识别一个或多个要操作的字段的表达式。可以是字段键,常量,正则表达式,或者通配符(
*)。支持所有字段类型。
显著行为
MODE() 返回最早的字段值 timestamp,如果有两个或多个值在最大出现次数上有并列的情况。
示例
计算字段的众数值
SELECT MODE(co) FROM home
| 时间 | 模式 |
|---|
| 1970-01-01T00:00:00Z | 0 |
计算每个字段的众数值
| 时间 | 模式_co | 模式_hum | 模式_temp |
|---|
| 1970-01-01T00:00:00Z | 0 | 36 | 22.7 |
计算匹配正则表达式的字段键的众数
SELECT MODE(/^[th]/) FROM home
| 时间 | 湿度模式 | 温度模式 |
|---|
| 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: 用于识别一个或多个要操作的字段的表达式。可以是一个 field key,常量,正则表达式或通配符 (
*)。支持 数值字段。
示例
计算一个字段的差异
SELECT SPREAD(temp) FROM home
| 时间 | 差价 |
|---|
| 1970-01-01T00:00:00Z | 2.3000000000000007 |
计算每个字段的差值
SELECT SPREAD(*) FROM home
| 时间 | 传播系数 | 湿度传播系数 | 温度传播系数 |
|---|
| 1970-01-01T00:00:00Z | 26 | 1 | 2.3000000000000007 |
计算与正则表达式匹配的字段键的差异
SELECT SPREAD(/^[th]/) FROM home
| 时间 | 湿度差 | 温度差 |
|---|
| 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 |
标准差()
返回字段值的标准差。
参数
- field_expression: 用于识别一个或多个要操作的字段的表达式。可以是一个 field key,常量,正则表达式或通配符 (
*)。支持 数字字段。
示例
计算字段的标准差
SELECT STDDEV(temp) FROM home
| 时间 | 标准差 |
|---|
| 1970-01-01T00:00:00Z | 0.5553238833191091 |
计算每个字段的标准差
SELECT STDDEV(*) FROM home
| 时间 | 标准差_水分 | 标准差_湿度 | 标准差_温度 |
|---|
| 1970-01-01T00:00:00Z | 7.774613519951676 | 0.25495097567963926 | 0.5553238833191091 |
计算字段的标准偏差,其中字段关键字与正则表达式匹配
SELECT STDDEV(/^[th]/) FROM home
| 时间 | 湿度标准差 | 温度标准差 |
|---|
| 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 |
求和()
返回字段值的总和。
参数
- field_expression: 表达式,用于识别一个或多个要操作的字段。可以是一个字段键,常量,正则表达式,或通配符 (
*)。支持数值字段。
示例
计算字段中值的总和
| 时间 | 总计 |
|---|
| 1970-01-01T00:00:00Z | 137 |
计算每个字段中的值的总和
| 时间 | 总碳 | 总湿度 | 总温度 |
|---|
| 1970-01-01T00:00:00Z | 137 | 939.9 | 582.3 |
计算字段值的总和,其中字段键与正则表达式匹配
SELECT SUM(/^[th]/) FROM home
| 时间 | 总湿度 | 总温度 |
|---|
| 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 |