文档文档

使用 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 的测量等同于 InfluxDB 3 的

聚合函数和选择器函数

聚合函数和选择器函数都从每个组返回有限数量的行。聚合函数返回单行,而某些选择器函数允许您指定从每个组返回的行数。例如,如果您 GROUP BY room 并在 SELECT 子句中执行聚合操作,则结果包括每个唯一 room 值的聚合值。

聚合函数

使用聚合函数来聚合每个组中指定字段的值,并为每个组返回包含聚合字段值的单行。

查看 InfluxQL 聚合函数

基本聚合查询
SELECT MEAN(co) from home

选择器函数

使用选择器函数从指定字段“选择”一个值。

查看 InfluxQL 选择器函数

基本选择器查询
SELECT TOP(co, 3) from home

示例聚合查询

示例数据

以下示例使用家庭传感器数据。要运行示例查询并返回结果,请在运行示例查询之前将示例数据写入您的 InfluxDB 3 Core 数据库。

执行未分组的聚合

要聚合指定字段中的所有查询值

  • 在您的 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 3 Core 和 Enterprise

快速启动。更快扩展。

获取更新

InfluxDB 3 Core 是一个开源、高速、最近数据引擎,可实时收集和处理数据,并将其持久化到本地磁盘或对象存储。InfluxDB 3 Enterprise 构建在 Core 的基础上,增加了高可用性、读取副本、增强的安全性以及数据压缩,以实现更快的查询和优化的存储。InfluxDB 3 Enterprise 的免费层可供非商业家庭或业余爱好者使用。

有关更多信息,请查看