函數的通用語法
本文檔主要介紹了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()
可以更改這個值。