使用聚合函数来评估、聚合和返回数据中的值。聚合函数返回一行,其中包含来自每个 InfluxQL 组的聚合值。
示例使用《InfluxDB 入门教程》中提供的示例数据集。
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 支持嵌套 DISTINCT() 到 COUNT() 中。
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 |
INTEGRAL()
返回查询的 字段值的曲线下面积,并将这些结果转换为每单位时间的总面积。
INTEGRAL() 不支持 fill()。INTEGRAL() 支持 int64 和 float64 字段值 数据类型。
INTEGRAL(field_expression[, unit])
参数
- field_expression:用于标识要对其进行操作的一个或多个字段的表达式。可以是 字段键、常量、正则表达式或通配符 (
*)。 - unit:计算积分时使用的时间单位。默认为
1s(一秒)。
示例
计算字段的积分
SELECT
INTEGRAL(co)
FROM home
WHERE room = 'Kitchen'
| time | integral |
|---|
| 1970-01-01T00:00:00Z | 266400 |
计算字段的积分并指定单位选项
SELECT
INTEGRAL(co, 1h)
FROM home
WHERE room = 'Kitchen'
| time | integral |
|---|
| 1970-01-01T00:00:00Z | 74 |
计算每个字段的积分并指定单位选项
计算 h2o_feet 度量中的每个字段键(存储数字值的字段)所关联的字段值的曲线下面积(以分钟为单位)。h2o_feet 度量有一个数字字段:water_level。
SELECT
INTEGRAL(*, 1h)
FROM home
WHERE room = 'Kitchen'
| time | integral_co | integral_hum | integral_temp |
|---|
| 1970-01-01T00:00:00Z | 74 | 435 | 272.25 |
计算与正则表达式匹配的字段键的积分
SELECT
INTEGRAL(/^[th]/, 1h)
FROM home
WHERE room = 'Kitchen'
| time | integral_hum | integral_temp |
|---|
| 1970-01-01T00:00:00Z | 435 | 272.25 |
按时间分组计算字段的积分
SELECT
INTEGRAL(co, 1h)
FROM home
WHERE
room = 'Kitchen'
AND time >= '2022-01-01T08:00:00Z'
AND time <= '2022-01-01T20:00:00Z'
GROUP BY time(6h)
| time | integral |
|---|
| 2022-01-01T06:00:00Z | 0 |
| 2022-01-01T12:00:00Z | 30 |
| 2022-01-01T18:00:00Z | 44 |
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 3 Core 和本文档提供反馈和错误报告。要获得支持,请使用以下资源
具有年度合同或支持合同的客户可以 联系 InfluxData 支持。