1)count()函數
返回一個(field)字段中的非空值的數量。
SELECT COUNT(<field_key>) FROM <measurement_name> [WHERE <stuff>] [GROUP BY <stuff>]
例子1
計算非空water_level數量
>SELECT COUNT(water_level) FROM h2o_feet
結果 name: h2o_feet -------------- time count 1970-01-01T00:00:00Z 15258
說明 water_level這個字段在 h2o_feet表中共有15258條數據。
注意:聚合函數中如果沒有指定時間的話,會默認以 epoch 0 (1970-01-01T00:00:00Z
) 作為時間。
可以在where 中加入時間條件,如下:
例子2
計算非空值water_level每4天時間間隔里的數量
SELECT COUNT(water_level) FROM h2o_feet WHERE time >= '2015-08-18T00:00:00Z' AND time < '2015-09-18T17:00:00Z' GROUP BY time(4d)
結果
name: h2o_feet
--------------
time count
2015-08-17T00:00:00Z 1440
2015-08-21T00:00:00Z 1920
2015-08-25T00:00:00Z 1920
2015-08-29T00:00:00Z 1920
2015-09-02T00:00:00Z 1915
2015-09-06T00:00:00Z 1920
2015-09-10T00:00:00Z 1920
2015-09-14T00:00:00Z 1920
2015-09-18T00:00:00Z 335
這樣結果中會包含時間結果。
COUNT()
and controlling the values reported for intervals with no data(控制時間間隔內沒有值的返回值)
其他的InfluxQL功能時函數間間隔內沒有值返回null值,count()用0。添加 fill(<stuff>)到查詢里,用
<stuff>
. COUNT()
,代替null值返回。用0來代替沒有值的間隔數,加入fill(<stuff>)來代替0來輸出count()數。c
Example:用 fill(none)
to 去除0的間隔輸出數量
COUNT()
不用 fill(none)
:
> SELECT COUNT(water_level) FROM h2o_feet WHERE location = 'santa_monica' AND time >= '2015-09-18T21:41:00Z' AND time <= '2015-09-18T22:41:00Z' GROUP BY time(30m)
name: h2o_feet
--------------
time count
2015-09-18T21:30:00Z 1
2015-09-18T22:00:00Z 0
2015-09-18T22:30:00Z 0
COUNT()
用 fill(none)
:
> SELECT COUNT(water_level) FROM h2o_feet WHERE location = 'santa_monica' AND time >= '2015-09-18T21:41:00Z' AND time <= '2015-09-18T22:41:00Z' GROUP BY time(30m) fill(none)
name: h2o_feet
--------------
time count
2015-09-18T21:30:00Z 1
For a more general discussion of fill()
, see Data Exploration.
2、DISTINCT()函數
返回一個字段(field)的唯一值。
語法:
SELECT DISTINCT(<field_key>) FROM <measurement_name> [WHERE <stuff>] [GROUP BY <stuff>]
例子1
在level description選擇唯一的值
SELECT DISTINCT("level description") FROM h2o_feet
結果
name: h2o_feet
--------------
time distinct
1970-01-01T00:00:00Z between 6 and 9 feet
1970-01-01T00:00:00Z below 3 feet
1970-01-01T00:00:00Z between 3 and 6 feet
1970-01-01T00:00:00Z at or greater than 9 feet
這個例子顯示level description這個字段共有四個值,然后將其顯示了出來,時間為默認時間。
注:聚合函數返回的時代0(1970-01-01t00:00:00z)為時間戳,除非您指定一個下界的時間范圍。然后返回下界作為時間戳。
例子2
選擇唯一的值在leve description 以location 標簽分組
SELECT DISTINCT("level description") FROM h2o_feet GROUP BY location
結果
name: h2o_feet tags: location=coyote_creek time distinct ---- -------- 1970-01-01T00:00:00Z between 6 and 9 feet 1970-01-01T00:00:00Z between 3 and 6 feet 1970-01-01T00:00:00Z below 3 feet 1970-01-01T00:00:00Z at or greater than 9 feet name: h2o_feet tags: location=santa_monica time distinct ---- -------- 1970-01-01T00:00:00Z below 3 feet 1970-01-01T00:00:00Z between 3 and 6 feet 1970-01-01T00:00:00Z between 6 and 9 feet
例子3
聚合函數DISTINCT() 使用count(),以location分組獲得level_description的唯一數量
SELECT COUNT(DISTINCT("level description")) FROM h2o_feet GROUP BY location
結果
name: h2o_feet
tags: location = coyote_creek
time count
---- -----
1970-01-01T00:00:00Z 4
name: h2o_feet
tags: location = santa_monica
time count
---- -----
1970-01-01T00:00:00Z 3
3)MEAN() 函數
返回一個字段(field)中的值的算術平均值(平均值)。字段類型必須是長整型或float64。
語法格式
SELECT MEAN(<field_key>) FROM <measurement_name> [WHERE <stuff>] [GROUP BY <stuff>]
例子1
計算water_level的平均值
SELECT MEAN(water_level) FROM h2o_feet
結果
name: h2o_feet -------------- time mean 1970-01-01T00:00:00Z 4.286791371454075
解釋:
說明water_level字段的平均值為4.286791371454075
時間為默認時間,當然,你也可以加入where條件。
注意:
聚合函數返回的時代0(1970-01-01t00:00:00z)為時間戳,除非您指定一個下界的時間范圍。然后他們返回下界的時間戳。
在float64點同一套執行mean()可能會產生稍微不同的結果。
InfluxDB之前不適用的功能,結果在那些小差異排序分。
例子2、計算wate_level以4天為間隔的平均值
SELECT MEAN(water_level) FROM h2o_feet WHERE time >= '2015-08-18T00:00:00Z' AND time < '2015-09-18T17:00:00Z' GROUP BY time(4d)
結果
name: h2o_feet
--------------
time mean
2015-08-17T00:00:00Z 4.322029861111125
2015-08-21T00:00:00Z 4.251395512375667
2015-08-25T00:00:00Z 4.285036458333324
2015-08-29T00:00:00Z 4.469495801899061
2015-09-02T00:00:00Z 4.382785378590083
2015-09-06T00:00:00Z 4.28849666349042
2015-09-10T00:00:00Z 4.658127604166656
2015-09-14T00:00:00Z 4.763504687500006
2015-09-18T00:00:00Z 4.232829850746268
4、MEDIAN()函數
從單個字段(field)中的排序值返回中間值(中位數)。中值是在一組數值中居於中間的數值。字段值的類型必須是長整型或float64格式。
語法:
SELECT MEDIAN(<field_key>) FROM <measurement_name> [WHERE <stuff>] [GROUP BY <stuff>]
注:median()幾乎相當於PERCENTILE(field_key, 50)
,如果參數集合中包含偶數個數字,函數 MEDIAN 將返回位於中間的兩個數的平均值。
中值 中值是一組數中間位置的數;即一半數的值比中值大,另一半數的值比中值小。例如,2、3、3、5、7 和 10 的中值是 4
例子1
選擇water_level的中間值
SELECT MEDIAN(water_level) from h2o_feet
結果
name: h2o_feet
--------------
time median
1970-01-01T00:00:00Z 4.124
解釋:
說明表中 water_level字段的中位數是 4.124
注:聚合函數返回的時代0(1970-01-01t00:00:00z)為時間戳,除非您指定一個下界的時間范圍。然后返回下界作為時間戳。
例子2
選擇時間在2015年8月18日和8月18日30分,以location分組water_level的中間值
SELECT MEDIAN(water_level) FROM h2o_feet WHERE time >= '2015-08-18T00:00:00Z' AND time < '2015-08-18T00:36:00Z' GROUP BY location
結果
name: h2o_feet
tags: location = coyote_creek
time median
---- ------
2015-08-18T00:00:00Z 7.8245
name: h2o_feet
tags: location = santa_monica
time median
---- ------
2015-08-18T00:00:00Z 2.0575
5)SPREAD()函數
返回字段的最小值和最大值之間的差值。數據的類型必須是長整型或float64。
語法
SELECT SPREAD(<field_key>) FROM <measurement_name> [WHERE <stuff>] [GROUP BY <stuff>]
例子1
計算water_level的最小值 與最大值 之間差
SELECT SPREAD(water_level) FROM h2o_feet
結果
name: h2o_feet
--------------
time spread
1970-01-01T00:00:00Z 10.574
注意:
聚合函數返回的時代0(1970-01-01t00:00:00z)為時間戳,除非您指定一個下界的時間范圍。然后他們回到下界的時間戳。
在float64點同一套執行spread()可能會產生稍微不同的結果。InfluxDB之前不適用的功能,結果在那些小差異排序分。
例子2
計算water_level的最小值 與最大值差,以30分鍾間隔,指定location為santa_monica,和一個時間范圍
SELECT SPREAD(water_level) FROM h2o_feet WHERE location = 'santa_monica' AND time >= '2015-09-18T17:00:00Z' AND time < '2015-09-18T20:30:00Z' GROUP BY time(30m)
結果
name: h2o_feet
--------------
time spread
2015-09-18T17:00:00Z 0.16699999999999982
2015-09-18T17:30:00Z 0.5469999999999997
2015-09-18T18:00:00Z 0.47499999999999964
2015-09-18T18:30:00Z 0.2560000000000002
2015-09-18T19:00:00Z 0.23899999999999988
2015-09-18T19:30:00Z 0.1609999999999996
2015-09-18T20:00:00Z 0.16800000000000015
6)SUM()函數
返回一個字段中的所有值的和。字段的類型必須是長整型或float64。
語法:
SELECT SUM(<field_key>) FROM <measurement_name> [WHERE <stuff>] [GROUP BY <stuff>]
例子1
計算water_level的所有值的和
SELECT SUM(water_level) FROM h2o_feet
結果
name: h2o_feet
--------------
time sum
1970-01-01T00:00:00Z 67777.66900000002
注意:
聚合函數返回的時代0(1970-01-01t00:00:00z)為時間戳,除非您指定一個下界的時間范圍。然后他們回到下界的時間戳。
在float64點同一套執行sum()可能會產生稍微不同的結果。InfluxDB之前不適用的功能,結果在那些小差異排序分。
例子2
計算以5天為分組,water_level的和
SELECT SUM(water_level) FROM h2o_feet WHERE time >= '2015-08-18T00:00:00Z' AND time < '2015-09-18T17:00:00Z' GROUP BY time(5d)
結果:
--------------
time sum
2015-08-18T00:00:00Z 10334.908999999983
2015-08-23T00:00:00Z 10113.356999999995
2015-08-28T00:00:00Z 10663.683000000006
2015-09-02T00:00:00Z 10451.321
2015-09-07T00:00:00Z 10871.817999999994
2015-09-12T00:00:00Z 11459.00099999999
2015-09-17T00:00:00Z 3627.762000000003
nearly equivalent
7)INTEGRAL()函數
返回曲線
語法:
SELECT INTEGRAL( [ * | <field_key> | /<regular_expression>/ ] [ , <unit> ] ) [INTO_clause] FROM_clause [WHERE_clause] [GROUP_BY_clause] [ORDER_BY_clause] [LIMIT_clause] [OFFSET_clause] [SLIMIT_clause] [SOFFSET_clause]
8) STDDEV