本文檔主要介紹了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()可以更改這個值。