使用 InfluxQL 聚合数据
包含聚合数据的 InfluxQL 查询包含以下子句
* 必需- *
SELECT:指定要从度量中输出的字段和计算,或使用通配符别名(*)选择度量中的所有字段和标签。 - *
FROM:指定要从中查询数据的度量。 WHERE:仅检索满足指定条件的数据——例如,时间在某个时间范围内,包含特定的标签值,或包含超出指定阈值字段值。GROUP BY:按标签值和时间间隔对数据进行分组。
为简洁起见,本指南中的“聚合”一词指的是对数据集应用聚合函数和选择器函数。
了解如何对查询的数据应用聚合操作
InfluxDB v1 到 InfluxDB 3 数据模型
InfluxQL 是围绕 InfluxDB v1 数据模型设计的,但仍可用于查询 InfluxDB 3 Core 中的数据。在使用 InfluxDB 3 Core InfluxQL 实现时,数据模型在以下方面有所不同:
- InfluxDB v1 的 数据库和保留策略组合被合并为单个 InfluxDB 3 数据库实体。
- InfluxDB v1 的 measurement 等同于 InfluxDB 3 的 table。
聚合函数和选择器函数
聚合函数和选择器函数都会从每个组中返回有限数量的行。聚合函数返回一行,而某些选择器函数允许您指定从每个组返回的行数。例如,如果您 GROUP BY room 并执行 SELECT 子句中的聚合操作,结果将包括每个唯一 room 值的聚合值。
聚合函数
使用聚合函数为每个组中指定字段的值进行聚合,并返回包含聚合字段值的每组一行。
基本聚合查询
SELECT MEAN(co) from home选择器函数
使用选择器函数从指定字段中“选择”一个值。
基本选择器查询
SELECT TOP(co, 3) from home示例聚合查询
执行未分组的聚合
聚合指定字段中所有查询到的值
- 在
SELECT语句中使用聚合或选择器函数。 - 不要包含
GROUP BY子句,以使您的数据保持未分组状态。
SELECT MEAN(co) AS "average co" FROM home分组和聚合数据
将聚合或选择器函数应用于分组数据
- 在
SELECT语句中使用聚合或选择器函数。 - 包含一个
GROUP BY子句,并用逗号分隔要分组的标签列表。
使用 GROUP BY 时请牢记以下几点
GROUP BY可以使用在SELECT子句中定义的列别名。
SELECT
MEAN(temp) AS "average temp"
FROM home
GROUP BY room通过应用基于间隔的聚合对数据进行降采样
查询时间序列时的常见用例是通过将聚合应用于基于时间的组来对数据进行降采样。对数据进行分组和聚合到基于时间的组
在
WHERE子句中,包含查询的时间范围。基于间隔的聚合会为每个指定的时间间隔生成一行。如果WHERE子句中未指定时间范围,查询将使用默认时间范围(1970-01-01T00:00:00Z 到现在),并为该时间范围内的每个间隔返回一行。在
GROUP BY子句中- 使用
time()函数指定要分组的时间间隔。 - 可选:指定其他要分组的标签。
- 使用
以下示例检索时间间隔和房间的唯一组合及其最低、最高和平均温度。
SELECT
MAX(temp) AS "max temp",
MIN(temp) AS "min temp",
MEAN(temp) AS "average temp"
FROM home
WHERE
time >= '2022-01-01T08:00:00Z'
AND time < '2022-01-01T20:00:00Z'
GROUP BY time(2h), room此页面是否有帮助?
感谢您的反馈!
支持和反馈
感谢您成为我们社区的一员!我们欢迎并鼓励您对 InfluxDB 3 Core 和本文档提供反馈和错误报告。要获得支持,请使用以下资源
具有年度合同或支持合同的客户可以 联系 InfluxData 支持。