使用 InfluxQL 聚合数据
一个聚合数据的 InfluxQL 查询包括以下子句
* 必需- *
SELECT: 指定从度量中输出字段和计算,或者使用通配符别名(*)从度量中选择所有字段和标签。 - *
FROM: 指定查询数据的度量。 WHERE: 仅检索满足指定条件的数据——例如,在特定时间范围内,包含特定的标签值,或者包含指定范围之外的字段值。GROUP BY: 按标签值和时间间隔分组数据。
为了简单起见,本指南中的术语“聚合”指的是对数据集应用聚合和选择器函数。
了解如何将聚合操作应用于查询数据
聚合和选择器函数
聚合和选择器函数从每个组返回有限数量的行。聚合函数返回单行,而某些选择器函数允许您指定从每个组返回的行数。例如,如果您在 SELECT 子句中执行聚合操作并 GROUP BY room,则结果包括每个唯一 room 值的聚合值。
聚合函数
使用 聚合函数 对每个组的指定字段中的值进行聚合,并为每个组返回包含聚合字段值的单行。
基本聚合查询
SELECT MEAN(co) from home
选择器函数
使用 选择器函数 从指定字段“选择”值。
基本选择器查询
SELECT TOP(co, 3) from home
示例聚合查询
示例数据
以下示例使用在“开始使用家庭传感器数据”中编写的样本数据。在运行示例查询并返回结果之前,请先将样本数据写入您的InfluxDB集群数据库。
执行无分组聚合
对指定字段中的所有查询值进行聚合
- 在您的
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
此页面有帮助吗?
感谢您的反馈!