全部产品
Search
文档中心

时间序列数据库 TSDB:函数的通用语法

更新时间:Jul 28, 2021

本文档主要介绍了InfluxQL函数的通用语法。

在SELECT子句中指定多个函数

语法

SELECT <function>(),<function>() FROM_clause [...]

语法描述

使用逗号(,)将SELECT语句中的多个函数分开。该语法适用于除TOP()BOTTOM()之外的所有InfluxQL函数。SELECT子句不支持TOP()BOTTOM()和其它函数同时使用。

示例一:在一个查询中计算field value的平均值和中位数

> SELECT MEAN("water_level"),MEDIAN("water_level") FROM "h2o_feet"

name: h2o_feet
time                  mean               median
--------------
1970-01-01T00:00:00Z4.4421070258225224.124

该查询返回water_level的平均值和中位数。

示例二:在一个查询中计算两个field的mode

> SELECT MODE("water_level"),MODE("level description") FROM "h2o_feet"

name: h2o_feet
time                  mode  mode_1
--------------
1970-01-01T00:00:00Z2.69  between 3 and 6 feet

该查询返回water_level中出现频率最高的field value和level description中出现频率最高的field value。water_level对应的值在列mode中,level description对应的值在列mode_1中。因为系统不能返回多个具有相同名字的列,所以它将第二个列mode重命名为mode_1

关于如何配置输出列的名字,请查看重命名输出的field key章节。

示例三:在一个查询中计算field value的最小值和最大值

> SELECT MIN("water_level"), MAX("water_level")[...]

name: h2o_feet
time                  min    max
----------
1970-01-01T00:00:00Z-0.619.964

该查询返回water_level的最小值和最大值。

请注意,该查询返回1970-01-01T00:00:00Z作为时间戳,这是TSDB For InfluxDB®的空时间戳。MIN()MAX()是selector函数;当selector函数是SELECT子句中的唯一函数时,它返回一个特定的时间戳。因为MIN()MAX()返回两个不同的时间戳(见下面的例子),所以系统会用空时间戳覆盖这些时间戳。

>  SELECT MIN("water_level") FROM "h2o_feet"

name: h2o_feet
time                  min
-------
2015-08-29T14:30:00Z-0.61<---Timestamp1

>  SELECT MAX("water_level") FROM "h2o_feet"

name: h2o_feet
time                  max
-------
2015-08-29T07:24:00Z9.964<---Timestamp2

重命名输出的field key

语法

SELECT <function>() AS <field_key>[...]

语法描述

默认情况下,函数返回的结果在与函数名称匹配的field key下面。使用AS子句可以指定输出的field key的名字。

示例一:指定输出的field key

> SELECT MEAN("water_level") AS "dream_name" FROM "h2o_feet"

name: h2o_feet
time                  dream_name
--------------
1970-01-01T00:00:00Z4.442107025822522

该查询返回water_level的平均值,并将输出的field key重命名为dream_name。如果没有AS子句,那么查询会返回mean作为输出的field key:

> SELECT MEAN("water_level") FROM "h2o_feet"

name: h2o_feet
time                  mean
--------
1970-01-01T00:00:00Z4.442107025822522

示例二:为多个函数指定输出的field key

> SELECT MEDIAN("water_level") AS "med_wat",MODE("water_level") AS "mode_wat" FROM "h2o_feet"

name: h2o_feet
time                  med_wat  mode_wat
-------------------
1970-01-01T00:00:00Z4.1242.69

该查询返回water_level的中位数和water_level中出现频率最高的field value,并将输出的field key分别重命名为med_watmode_wat。如果没有AS子句,那么查询会返回medianmode作为输出的field key:

> SELECT MEDIAN("water_level"),MODE("water_level") FROM "h2o_feet"

name: h2o_feet
time                  median  mode
--------------
1970-01-01T00:00:00Z4.1242.69

改变不含数据的时间间隔的返回值

默认情况下,包含InfluxQL函数和GROUP BY time()子句的查询对不包含数据的时间间隔返回空值。在GROUP BY子句后面加上fill()可以更改这个值。