全部產品
Search
文件中心

:函數的通用文法

更新時間:Jul 06, 2024

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