使用 InfluxQL 聚合数据
使用 InfluxQL 聚合数据的查询包括以下子句
* 必需- *
SELECT
:指定要从测量中输出的字段和计算,或使用通配符别名 (*
) 选择测量中的所有字段和标签。 - *
FROM
:指定要从中查询数据的测量。 WHERE
:仅检索满足指定条件的数据,例如,在时间范围内、包含特定标签值或包含超出指定范围的字段值。GROUP BY
:按标签值和时间间隔对数据进行分组。
为简单起见,本指南中的术语“聚合”指的是对数据集应用聚合函数和选择器函数。
了解如何将聚合操作应用于查询的数据
聚合函数和选择器函数
聚合函数和选择器函数都从每个组返回有限数量的行。聚合函数返回单行,而某些选择器函数允许您指定要从每个组返回的行数。例如,如果您 GROUP BY room
并在 SELECT
子句中执行聚合操作,则结果将包含 room
的每个唯一值的聚合值。
聚合函数
使用聚合函数聚合每个组的指定字段中的值,并为每个组返回包含聚合字段值的单行。
基本聚合查询
SELECT MEAN(co) from home
选择器函数
使用选择器函数从指定字段“选择”一个值。
基本选择器查询
SELECT TOP(co, 3) from home
聚合查询示例
示例数据
以下示例使用开始使用家庭传感器数据中写入的示例数据。要运行示例查询并返回结果,请在运行示例查询之前将示例数据写入到您的 InfluxDB Clustered 数据库。
执行未分组的聚合
聚合指定字段中的所有查询值
- 在您的
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 Clustered 和本文档的反馈和错误报告。要获得支持,请使用以下资源
拥有年度合同或支持合同的客户可以联系 InfluxData 支持。