文档文档

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

查看示例结果

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

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

  • 在您的 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 开源版本现已公开发布 Alpha 版

InfluxDB 3 开源版本现已可用于 Alpha 测试,根据 MIT 或 Apache 2 许可获得许可。

我们正在发布两个产品作为 Alpha 版本的一部分。

InfluxDB 3 Core 是我们的新开源产品。它是用于时间序列和事件数据的最新数据引擎。InfluxDB 3 Enterprise 是一个商业版本,它建立在 Core 的基础上,增加了历史查询功能、读取副本、高可用性、可扩展性和细粒度的安全性。

有关如何开始使用的更多信息,请查看