本文档主要介绍了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()
可以更改这个值。