文档文档

使用 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

查看示例结果

通过应用基于间隔的聚合进行数据降采样

查询时间序列时的一个常见用例是通过对基于时间的组应用聚合来降采样数据。要将数据分组并聚合到基于时间的组中

  • 在您的SELECT子句中,将聚合选择函数应用于查询字段。

  • 在您的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

查看示例结果


此页面有帮助吗?

感谢您的反馈!


Flux的未来

Flux正在进入维护模式。您可以继续按当前方式使用它,而无需对您的代码进行任何更改。

了解更多

InfluxDB v3增强功能和InfluxDB集群版现已普遍可用

包括更快查询性能和管理工具的新功能,推动了InfluxDB v3产品线的进步。InfluxDB集群版现已普遍可用。

InfluxDB v3性能和功能

InfluxDB v3产品线在查询性能方面取得了显著增强,并提供了新的管理工具。这些增强包括用于监控InfluxDB集群健康状况的操作仪表板、InfluxDB云专用中的单点登录(SSO)支持和用于令牌和数据库的新管理API。

了解v3增强功能


InfluxDB集群版普遍可用

InfluxDB集群版现已普遍可用,并为您在自管理堆栈中提供了InfluxDB v3的功能。

与我们谈谈InfluxDB集群版