文档文档

使用 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 值的聚合值。

聚合函数

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

查看 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

查看示例结果


此页面是否有帮助?

感谢您的反馈!


InfluxDB 3.8 新特性

InfluxDB 3.8 和 InfluxDB 3 Explorer 1.6 的主要增强功能。

查看博客文章

InfluxDB 3.8 现已适用于 Core 和 Enterprise 版本,同时发布了 InfluxDB 3 Explorer UI 的 1.6 版本。本次发布着重于操作成熟度,以及如何更轻松地部署、管理和可靠地运行 InfluxDB。

更多信息,请查看

InfluxDB Docker 的 latest 标签将指向 InfluxDB 3 Core

在 **2026 年 2 月 3 日**,InfluxDB Docker 镜像的 latest 标签将指向 InfluxDB 3 Core。为避免意外升级,请在您的 Docker 部署中使用特定的版本标签。

如果使用 Docker 来安装和运行 InfluxDB,latest 标签将指向 InfluxDB 3 Core。为避免意外升级,请在您的 Docker 部署中使用特定的版本标签。例如,如果使用 Docker 运行 InfluxDB v2,请将 latest 版本标签替换为 Docker pull 命令中的特定版本标签 — 例如

docker pull influxdb:2