函数的通用语法
本文档主要介绍了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_wat和mode_wat。如果没有AS子句,那么查询会返回median和mode作为输出的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()可以更改这个值。