聚合函数
本文档主要介绍了聚合函数(Aggregations)的语法结构、语法说明以及使用示例。
COUNT()
返回非空的field value的个数。
语法
SELECT COUNT([*|<field_key>|/<regular_expression>/])[INTO_clause] FROM_clause [WHERE_clause][GROUP_BY_clause][ORDER_BY_clause][LIMIT_clause][OFFSET_clause][SLIMIT_clause][SOFFSET_clause]
嵌套语法
SELECT COUNT(DISTINCT([*|<field_key>|/<regular_expression>/]))[...]
语法说明
COUNT(field_key)
:返回field key对应的field value的个数。
COUNT(/regular_expression/)
:返回与正则表达式匹配的每个field key对应的field value的个数。
COUNT(*)
:返回在measurement中每个field key对应的field value的个数。
COUNT()
:支持所有数据类型的field value。InfluxQL支持将DISTINCT()
函数嵌套在COUNT()
函数里。
示例1:计算指定field key对应的field value的个数
SELECT COUNT("water_level") FROM "h2o_feet"
name: h2o_feet
time count
---------
1970-01-01T00:00:00Z15258
该查询返回measurement h2o_feet
中field key water_level
对应的非空field value的个数。
示例2:计算measurement中每个field key对应的field value的个数
SELECT COUNT(*) FROM "h2o_feet"
name: h2o_feet
time count_level description count_water_level
--------------------------------------------
1970-01-01T00:00:00Z1525815258
该查询返回measurement h2o_feet
中每个field key对应的非空field value的个数。measurement h2o_feet
中有两个field key:level description
和water_level
。
示例3:计算与正则表达式匹配的每个field key对应的field value的个数
SELECT COUNT(/water/) FROM "h2o_feet"
name: h2o_feet
time count_water_level
---------------------
1970-01-01T00:00:00Z15258
该查询返回measurement h2o_feet
中每个包含单词water
的field key对应的非空field value的个数。
示例四:计算指定field key对应的field value的个数并包含多个子句
SELECT COUNT("water_level") FROM "h2o_feet" WHERE time >='2015-08-17T23:48:00Z' AND time <='2015-08-18T00:54:00Z' GROUP BY time(12m),* fill(200) LIMIT 7 SLIMIT 1
name: h2o_feet
tags: location=coyote_creek
time count
---------
2015-08-17T23:48:00Z200
2015-08-18T00:00:00Z2
2015-08-18T00:12:00Z2
2015-08-18T00:24:00Z2
2015-08-18T00:36:00Z2
2015-08-18T00:48:00Z2
该查询返回field key water_level
对应的非空field value的个数,它涵盖的时间范围在2015-08-17T23:48:00Z
和2015-08-18T00:54:00Z
之间,并将查询结果按12分钟的时间间隔和每个tag进行分组,同时,该查询用200
填充没有数据的时间间隔,并将返回的数据点个数和序列个数分别限制为7和1。
示例五:计算指定field key对应的不同field value的个数
SELECT COUNT(DISTINCT("level description")) FROM "h2o_feet"
name: h2o_feet
time count
---------
1970-01-01T00:00:00Z4
该查询返回measurement h2o_feet
中field key level description
对应的不同field value的个数。
COUNT()的常见问题
大多数InfluxQL函数对于没有数据的时间间隔返回null
值,如果不想返回null
,可以使用fill()
函数,fill(<fill_option>)
将null
值替换成fill_option
。对于没有数据的时间间隔,COUNT()
返回0
,而fill(<fill_option>)
可以将0
替换成fill_option
。
示例
> SELECT COUNT("water_level") FROM "h2o_feet" WHERE time >='2015-09-18T21:24:00Z' AND time <='2015-09-18T21:54:00Z' GROUP BY time(12m)
name: h2o_feet
time count
---------
2015-09-18T21:24:00Z2
2015-09-18T21:36:00Z2
2015-09-18T21:48:00Z0
> SELECT COUNT("water_level") FROM "h2o_feet" WHERE time >='2015-09-18T21:24:00Z' AND time <='2015-09-18T21:54:00Z' GROUP BY time(12m) fill(800000)
name: h2o_feet
time count
---------
2015-09-18T21:24:00Z2
2015-09-18T21:36:00Z2
2015-09-18T21:48:00Z800000
上述代码块中的第一个查询没有使用fill()
,最后一个时间间隔中没有数据,因此该时间间隔返回的值是0
。第二个查询使用了fill(800000)
,它将最后一个时间间隔的返回值0
替换成800000
。
DISTINCT()
返回不同的field value。
语法
SELECT DISTINCT([*|<field_key>|/<regular_expression>/]) FROM_clause [WHERE_clause][GROUP_BY_clause][ORDER_BY_clause][LIMIT_clause][OFFSET_clause][SLIMIT_clause][SOFFSET_clause]
嵌套语法
SELECT COUNT(DISTINCT([*|<field_key>|/<regular_expression>/]))[...]
语法说明
DISTINCT(field_key)
:返回field key对应的不同的field value。
DISTINCT(/regular_expression/)
:返回与正则表达式匹配的每个field key对应的不同的field value。
DISTINCT(*)
:返回在measurement中每个field key对应的不同的field value。
DISTINCT()
:支持所有数据类型的field value。InfluxQL支持将DISTINCT()
函数嵌套在COUNT()
函数里。
示例1:列出指定field key对应的不同的field value
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
该查询返回measurement h2o_feet
中field key level description
对应的不同field value。
示例2:列出measurement中每个field key对应的不同的field value
SELECT DISTINCT(*) FROM "h2o_feet"
name: h2o_feet
time distinct_level description distinct_water_level
--------------------------------------------------
1970-01-01T00:00:00Z between 6 and 9 feet 8.12
1970-01-01T00:00:00Z between 3 and 6 feet 8.005
1970-01-01T00:00:00Z at or greater than 9 feet 7.887
1970-01-01T00:00:00Z below 3 feet 7.762
[...]
该查询返回measurement h2o_feet
中每个field key对应的不同的field value。measurement h2o_feet
中有两个field key:level description
和water_level
。
示例3:列出与正则表达式匹配的每个field key对应的不同的field value
SELECT DISTINCT(/description/) FROM "h2o_feet"
name: h2o_feet
time distinct_level description
------------------------------
1970-01-01T00:00:00Z below 3 feet
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 at or greater than 9 feet
该查询返回measurement h2o_feet
中每个包含单词description
的field key对应的不同的field value。
示例4:列出指定field key对应的不同的field value并包含多个子句
> SELECT DISTINCT("level description") FROM "h2o_feet" WHERE time >='2015-08-17T23:48:00Z' AND time <='2015-08-18T00:54:00Z' GROUP BY time(12m),* SLIMIT 1
name: h2o_feet
tags: location=coyote_creek
time distinct
------------
2015-08-18T00:00:00Z between 6 and 9 feet
2015-08-18T00:12:00Z between 6 and 9 feet
2015-08-18T00:24:00Z between 6 and 9 feet
2015-08-18T00:36:00Z between 6 and 9 feet
2015-08-18T00:48:00Z between 6 and 9 feet
该查询返回field key level description
对应的不同的field value,它涵盖的时间范围在2015-08-17T23:48:00Z
和2015-08-18T00:54:00Z
之间,并将查询结果按12分钟的时间间隔和每个tag进行分组,同时,该查询将返回的序列个数限制为1。
示例5:计算指定field key对应的不同field value的个数
SELECT COUNT(DISTINCT("level description")) FROM "h2o_feet"
name: h2o_feet
time count
---------
1970-01-01T00:00:00Z4
该查询返回measurement h2o_feet
中field key level description
对应的不同field value的个数。
DISTINCT()的常见问题
在INTO
子句中使用DISTINCT()
可能会导致TSDB For InfluxDB®覆盖目标measurement中的数据点。DISTINCT()
通常返回多个具有相同时间戳的结果;TSDB For InfluxDB®假设在相同序列中并具有相同时间戳的数据点是重复数据点,并简单地用目标measurement中最新的数据点覆盖重复数据点。
示例
下面代码块中的第一个查询使用了DISTINCT()
,并返回四个结果。请注意,每个结果都有相同的时间戳。第二个查询将INTO
子句添加到查询中,并将查询结果写入measurement distincts
。最后一个查询选择measurement distincts
中所有数据。因为原来的四个结果是重复的(它们在相同的序列,有相同的时间戳),所以最后一个查询只返回一个数据点。当系统遇到重复数据点时,它会用最近的数据点覆盖之前的数据点。
SELECT DISTINCT("level description") FROM "h2o_feet"
name: h2o_feet
time distinct
------------
1970-01-01T00:00:00Z below 3 feet
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 at or greater than 9 feet
SELECT DISTINCT("level description") INTO "distincts" FROM "h2o_feet"
name: result
time written
-----------
1970-01-01T00:00:00Z4
SELECT * FROM "distincts"
name: distincts
time distinct
------------
1970-01-01T00:00:00Z at or greater than 9 feet
INTEGRAL()
返回field value曲线下的面积,即关于field value的积分。
语法
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]
语法说明
TSDB For InfluxDB®计算field value曲线下的面积,并将这些结果转换为每个unit
的总面积。参数unit
的值是一个整数,单位为时间,这个参数是可选的。如果查询没有指定unit
的值,那么unit
默认为1秒。
INTEGRAL(field_key)
:返回field key对应的field value曲线下的面积。
INTEGRAL(/regular_expression/)
:返回与正则表达式匹配的每个field key对应的field value曲线下的面积。
INTEGRAL(*)
:返回在measurement中每个field key对应的field value曲线下的面积。
INTEGRAL()
:不支持fill()
。INTEGRAL()
支持数据类型为int64和float64的field value。
示例1:计算指定field key对应的field value的积分
SELECT INTEGRAL("water_level") FROM "h2o_feet" WHERE "location"='santa_monica' AND time >='2015-08-18T00:00:00Z' AND time <='2015-08-18T00:30:00Z'
name: h2o_feet
time integral
------------
1970-01-01T00:00:00Z3732.66
该查询返回measurement h2o_feet
中field key water_level
对应的field value曲线下的面积(以秒为单位)。
示例2:计算指定field key对应的field value的积分并指定unit
SELECT INTEGRAL("water_level",1m) FROM "h2o_feet" WHERE "location"='santa_monica' AND time >='2015-08-18T00:00:00Z' AND time <='2015-08-18T00:30:00Z'
name: h2o_feet
time integral
------------
1970-01-01T00:00:00Z62.211
该查询返回measurement h2o_feet
中field key water_level
对应的field value曲线下的面积(以分钟为单位)。
示例3:计算measurement中每个field key对应的field value的积分并指定unit
SELECT INTEGRAL(*,1m) FROM "h2o_feet" WHERE "location"='santa_monica' AND time >='2015-08-18T00:00:00Z' AND time <='2015-08-18T00:30:00Z'
name: h2o_feet
time integral_water_level
------------------------
1970-01-01T00:00:00Z62.211
该查询返回measurement h2o_feet
中每个存储数值的field key对应的field value曲线下的面积(以分钟为单位)。measurement h2o_feet
中只有一个数值类型的field:water_level
。
示例4:计算与正则表达式匹配的每个field key对应的field value的积分并指定unit
SELECT INTEGRAL(/water/,1m) FROM "h2o_feet" WHERE "location"='santa_monica' AND time >='2015-08-18T00:00:00Z' AND time <='2015-08-18T00:30:00Z'
name: h2o_feet
time integral_water_level
------------------------
1970-01-01T00:00:00Z62.211
该查询返回measurement h2o_feet
中每个存储数值并包含单词water
的field key对应的field value曲线下的面积(以分钟为单位)。
示例5:计算指定field key对应的field value的积分并包含多个子句
SELECT INTEGRAL("water_level",1m) FROM "h2o_feet" WHERE "location"='santa_monica' AND time >='2015-08-18T00:00:00Z' AND time <='2015-08-18T00:30:00Z' GROUP BY time(12m) LIMIT 1
name: h2o_feet
time integral
------------
2015-08-18T00:00:00Z24.972
该查询返回measurement h2o_feet
中field key water_level
对应的field value曲线下的面积(以分钟为单位),它涵盖的时间范围在2015-08-18T00:00:00Z
和2015-08-18T00:30:00Z
之间,并将查询结果按12分钟的时间间隔进行分组。同时,该查询将返回的数据点个数限制为1。
MEAN()
返回field value的平均值。
语法
SELECT MEAN([*|<field_key>|/<regular_expression>/])[INTO_clause] FROM_clause [WHERE_clause][GROUP_BY_clause][ORDER_BY_clause][LIMIT_clause][OFFSET_clause][SLIMIT_clause][SOFFSET_clause]
语法说明
MEAN(field_key)
:返回field key对应的field value的平均值。
MEAN(/regular_expression/)
:返回与正则表达式匹配的每个field key对应的field value的平均值。
MEAN(*)
:返回在measurement中每个field key对应的field value的平均值。
MEAN()
:支持数据类型为int64和float64的field value。
示例1:计算指定field key对应的field value的平均值
SELECT MEAN("water_level") FROM "h2o_feet"
name: h2o_feet
time mean
--------
1970-01-01T00:00:00Z4.442107025822522
该查询返回measurement h2o_feet
中field key water_level
对应的field value的平均值。
示例2:计算measurement中每个field key对应的field value的平均值
SELECT MEAN(*) FROM "h2o_feet"
name: h2o_feet
time mean_water_level
--------------------
1970-01-01T00:00:00Z4.442107025822522
该查询返回measurement h2o_feet
中每个存储数值的field key对应的field value的平均值。measurement h2o_feet
中只有一个数值类型的field:water_level
。
示例3:计算与正则表达式匹配的每个field key对应的field value的平均值
SELECT MEAN(/water/) FROM "h2o_feet"
name: h2o_feet
time mean_water_level
--------------------
1970-01-01T00:00:00Z4.442107025822523
该查询返回measurement h2o_feet
中每个存储数值并包含单词water
的field key对应的field value的平均值。
示例4:计算指定field key对应的field value的平均值并包含多个子句
SELECT MEAN("water_level") FROM "h2o_feet" WHERE time >='2015-08-17T23:48:00Z' AND time <='2015-08-18T00:54:00Z' GROUP BY time(12m),* fill(9.01) LIMIT 7 SLIMIT 1
name: h2o_feet
tags: location=coyote_creek
time mean
--------
2015-08-17T23:48:00Z9.01
2015-08-18T00:00:00Z8.0625
2015-08-18T00:12:00Z7.8245
2015-08-18T00:24:00Z7.5675
2015-08-18T00:36:00Z7.303
2015-08-18T00:48:00Z7.046
该查询返回measurement h2o_feet
中field key water_level
对应的field value的平均值,它涵盖的时间范围在2015-08-17T23:48:00Z
和2015-08-18T00:30:00Z
之间,并将查询结果按12分钟的时间间隔和每个tag进行分组,同时,该查询用9.01
填充没有数据的时间间隔,并将返回的数据点个数和序列个数分别限制为7和1。
MEDIAN()
返回排好序的field value的中位数。
语法
SELECT MEDIAN([*|<field_key>|/<regular_expression>/])[INTO_clause] FROM_clause [WHERE_clause][GROUP_BY_clause][ORDER_BY_clause][LIMIT_clause][OFFSET_clause][SLIMIT_clause][SOFFSET_clause]
语法说明
MEDIAN(field_key)
:返回field key对应的field value的中位数。
MEDIAN(/regular_expression/)
:返回与正则表达式匹配的每个field key对应的field value的中位数。
MEDIAN(*)
:返回在measurement中每个field key对应的field value的中位数。
MEDIAN()
支持数据类型为int64和float64的field value。
MEDIAN()近似于PERCENTILE(field_key, 50),除非field key包含的field value个数为偶数,那么这时候MEDIAN()将返回两个中间值的平均数。
示例1:计算指定field key对应的field value的中位数
SELECT MEDIAN("water_level") FROM "h2o_feet"
name: h2o_feet
time median
----------
1970-01-01T00:00:00Z4.124
该查询返回measurement h2o_feet
中field key water_level
对应的field value的中位数。
示例2:计算measurement中每个field key对应的field value的中位数
SELECT MEDIAN(*) FROM "h2o_feet"
name: h2o_feet
time median_water_level
----------------------
1970-01-01T00:00:00Z4.124
该查询返回measurement h2o_feet
中每个存储数值的field key对应的field value的中位数。measurement h2o_feet
中只有一个数值类型的field:water_level
。
示例3:计算与正则表达式匹配的每个field key对应的field value的中位数
SELECT MEDIAN(/water/) FROM "h2o_feet"
name: h2o_feet
time median_water_level
----------------------
1970-01-01T00:00:00Z4.124
该查询返回measurement h2o_feet
中每个存储数值并包含单词water
的field key对应的field value的中位数。
示例4:计算指定field key对应的field value的中位数并包含多个子句
SELECT MEDIAN("water_level") FROM "h2o_feet" WHERE time >='2015-08-17T23:48:00Z' AND time <='2015-08-18T00:54:00Z' GROUP BY time(12m),* fill(700) LIMIT 7 SLIMIT 1 SOFFSET 1
name: h2o_feet
tags: location=santa_monica
time median
----------
2015-08-17T23:48:00Z700
2015-08-18T00:00:00Z2.09
2015-08-18T00:12:00Z2.077
2015-08-18T00:24:00Z2.0460000000000003
2015-08-18T00:36:00Z2.0620000000000003
2015-08-18T00:48:00Z700
该查询返回measurement h2o_feet
中field key water_level
对应的field value的中位数,它涵盖的时间范围在2015-08-17T23:48:00Z
和2015-08-18T00:54:00Z
之间,并将查询结果按12分钟的时间间隔和每个tag进行分组,同时,该查询用700
填充没有数据的时间间隔,将返回的数据点个数和序列个数分别限制为7和1,并将返回的序列偏移一个(即第一个序列的数据不返回)。
MODE()
返回field value中出现频率最高的值。
语法
SELECT MODE([*|<field_key>|/<regular_expression>/])[INTO_clause] FROM_clause [WHERE_clause][GROUP_BY_clause][ORDER_BY_clause][LIMIT_clause][OFFSET_clause][SLIMIT_clause][SOFFSET_clause]
语法说明
MODE(field_key)
:返回field key对应的field value中出现频率最高的值。
MODE(/regular_expression/)
:返回与正则表达式匹配的每个field key对应的field value中出现频率最高的值。
MODE(*)
:返回在measurement中每个field key对应的field value中出现频率最高的值。
MODE()
:支持所有数据类型的field value。
如果出现频率最高的值有两个或多个并且它们之间有关联,那么MODE()返回具有最早时间戳的field value。
示例1:计算指定field key对应的field value中出现频率最高的值
SELECT MODE("level description") FROM "h2o_feet"
name: h2o_feet
time mode
--------
1970-01-01T00:00:00Z between 3 and 6 feet
该查询返回measurement h2o_feet
中field key level description
对应的field value中出现频率最高的值。
示例2:计算measurement中每个field key对应的field value中出现频率最高的值
SELECT MODE(*) FROM "h2o_feet"
name: h2o_feet
time mode_level description mode_water_level
------------------------------------------
1970-01-01T00:00:00Z between 3 and 6 feet 2.69
该查询返回measurement h2o_feet
中每个field key对应的field value中出现频率最高的值。measurement h2o_feet
中有两个field key:level description
和water_level
。
示例3:计算与正则表达式匹配的每个field key对应的field value中出现频率最高的值
SELECT MODE(/water/) FROM "h2o_feet"
name: h2o_feet
time mode_water_level
--------------------
1970-01-01T00:00:00Z2.69
该查询返回measurement h2o_feet
中每个包含单词water
的field key对应的field value中出现频率最高的值。
示例4:计算指定field key对应的field value中出现频率最高的值并包含多个子句
SELECT MODE("level description") FROM "h2o_feet" WHERE time >='2015-08-17T23:48:00Z' AND time <='2015-08-18T00:54:00Z' GROUP BY time(12m),* LIMIT 3 SLIMIT 1 SOFFSET 1
name: h2o_feet
tags: location=santa_monica
time mode
--------
2015-08-17T23:48:00Z
2015-08-18T00:00:00Z below 3 feet
2015-08-18T00:12:00Z below 3 feet
该查询返回measurement h2o_feet
中field key water_level
对应的field value中出现频率最高的值,它涵盖的时间范围在2015-08-17T23:48:00Z
和2015-08-18T00:54:00Z
之间,并将查询结果按12分钟的时间间隔和每个tag进行分组,同时,该查询将返回的数据点个数和序列个数分别限制为3和1,并将返回的序列偏移一个(即第一个序列的数据不返回)。
SPREAD()
返回field value中最大值和最小值之差。
语法
SELECT SPREAD([*|<field_key>|/<regular_expression>/])[INTO_clause] FROM_clause [WHERE_clause][GROUP_BY_clause][ORDER_BY_clause][LIMIT_clause][OFFSET_clause][SLIMIT_clause][SOFFSET_clause]
语法说明
SPREAD(field_key)
:返回field key对应的field value中最大值和最小值之差。
SPREAD(/regular_expression/)
:返回与正则表达式匹配的每个field key对应的field value中最大值和最小值之差。
SPREAD(*)
:返回在measurement中每个field key对应的field value中最大值和最小值之差。
SPREAD()
:支持数据类型为int64和float64的field value。
示例1:计算指定field key对应的field value中最大值和最小值之差
SELECT SPREAD("water_level") FROM "h2o_feet"
name: h2o_feet
time spread
----------
1970-01-01T00:00:00Z10.574
该查询返回measurement h2o_feet
中field key water_level
对应的field value中最大值和最小值之差。
示例2:计算measurement中每个field key对应的field value中最大值和最小值之差
SELECT SPREAD(*) FROM "h2o_feet"
name: h2o_feet
time spread_water_level
----------------------
1970-01-01T00:00:00Z10.574
该查询返回measurement h2o_feet
中每个存储数值的field key对应的field value中最大值和最小值之差。measurement h2o_feet
中只有一个数值类型的field:water_level
。
示例3:计算与正则表达式匹配的每个field key对应的field value中最大值和最小值之差
SELECT SPREAD(/water/) FROM "h2o_feet"
name: h2o_feet
time spread_water_level
----------------------
1970-01-01T00:00:00Z10.574
该查询返回measurement h2o_feet
中每个存储数值并包含单词water
的field key对应的field value中最大值和最小值之差。
示例4:计算指定field key对应的field value中最大值和最小值之差并包含多个子句
SELECT SPREAD("water_level") FROM "h2o_feet" WHERE time >='2015-08-17T23:48:00Z' AND time <='2015-08-18T00:54:00Z' GROUP BY time(12m),* fill(18) LIMIT 3 SLIMIT 1 SOFFSET 1
name: h2o_feet
tags: location=santa_monica
time spread
----------
2015-08-17T23:48:00Z18
2015-08-18T00:00:00Z0.052000000000000046
2015-08-18T00:12:00Z0.09799999999999986
该查询返回measurement h2o_feet
中field key water_level
对应的field value中最大值和最小值之差,它涵盖的时间范围在2015-08-17T23:48:00Z
和2015-08-18T00:54:00Z
之间,并将查询结果按12分钟的时间间隔和每个tag进行分组,同时,该查询用18
填充没有数据的时间间隔,将返回的数据点个数和序列个数分别限制为3和1,并将返回的序列偏移一个(即第一个序列的数据不返回)。
STDDEV()
返回field value的标准差。
语法
SELECT STDDEV([*|<field_key>|/<regular_expression>/])[INTO_clause] FROM_clause [WHERE_clause][GROUP_BY_clause][ORDER_BY_clause][LIMIT_clause][OFFSET_clause][SLIMIT_clause][SOFFSET_clause]
语法说明
STDDEV(field_key)
:返回field key对应的field value的标准差。
STDDEV(/regular_expression/)
:返回与正则表达式匹配的每个field key对应的field value的标准差。
STDDEV(*)
:返回在measurement中每个field key对应的field value的标准差。
STDDEV()
:支持数据类型为int64和float64的field value。
示例1:计算指定field key对应的field value的标准差
SELECT STDDEV("water_level") FROM "h2o_feet"
name: h2o_feet
time stddev
----------
1970-01-01T00:00:00Z2.279144584196141
该查询返回measurement h2o_feet
中field key water_level
对应的field value的标准差。
示例2:计算measurement中每个field key对应的field value的标准差
SELECT STDDEV(*) FROM "h2o_feet"
name: h2o_feet
time stddev_water_level
----------------------
1970-01-01T00:00:00Z2.279144584196141
该查询返回measurement h2o_feet
中每个存储数值的field key对应的field value的标准差。measurement h2o_feet
中只有一个数值类型的field:water_level
。
示例3:计算与正则表达式匹配的每个field key对应的field value的标准差
SELECT STDDEV(/water/) FROM "h2o_feet"
name: h2o_feet
time stddev_water_level
----------------------
1970-01-01T00:00:00Z2.279144584196141
该查询返回measurement h2o_feet
中每个存储数值并包含单词water
的field key对应的field value的标准差。
示例4:计算指定field key对应的field value的标准差并包含多个子句
SELECT STDDEV("water_level") FROM "h2o_feet" WHERE time >='2015-08-17T23:48:00Z' AND time <='2015-08-18T00:54:00Z' GROUP BY time(12m),* fill(18000) LIMIT 2 SLIMIT 1 SOFFSET 1
name: h2o_feet
tags: location=santa_monica
time stddev
----------
2015-08-17T23:48:00Z18000
2015-08-18T00:00:00Z0.03676955262170051
该查询返回measurement h2o_feet
中field key water_level
对应的field value的标准差,它涵盖的时间范围在2015-08-17T23:48:00Z
和2015-08-18T00:54:00Z
之间,并将查询结果按12分钟的时间间隔和每个tag进行分组,同时,该查询用18000
填充没有数据的时间间隔,将返回的数据点个数和序列个数分别限制为2和1,并将返回的序列偏移一个(即第一个序列的数据不返回)。
SUM()
返回field value的总和。
语法
SELECT SUM([*|<field_key>|/<regular_expression>/])[INTO_clause] FROM_clause [WHERE_clause][GROUP_BY_clause][ORDER_BY_clause][LIMIT_clause][OFFSET_clause][SLIMIT_clause][SOFFSET_clause]
语法说明
SUM(field_key)
:返回field key对应的field value的总和。
SUM(/regular_expression/)
:返回与正则表达式匹配的每个field key对应的field value的总和。
SUM(*)
:返回在measurement中每个field key对应的field value的总和。
SUM()
:支持数据类型为int64和float64的field value。
示例1:计算指定field key对应的field value的总和
SELECT SUM("water_level") FROM "h2o_feet"
name: h2o_feet
time sum
-------
1970-01-01T00:00:00Z67777.66900000004
该查询返回measurement h2o_feet
中field key water_level
对应的field value的总和。
示例2:计算measurement中每个field key对应的field value的总和
SELECT SUM(*) FROM "h2o_feet"
name: h2o_feet
time sum_water_level
-------------------
1970-01-01T00:00:00Z67777.66900000004
该查询返回measurement h2o_feet
中每个存储数值的field key对应的field value的总和。measurement h2o_feet
中只有一个数值类型的field:water_level
。
示例3:计算与正则表达式匹配的每个field key对应的field value的总和
SELECT SUM(/water/) FROM "h2o_feet"
name: h2o_feet
time sum_water_level
-------------------
1970-01-01T00:00:00Z67777.66900000004
该查询返回measurement h2o_feet
中每个存储数值并包含单词water
的field key对应的field value的总和。
示例4:计算指定field key对应的field value的总和并包含多个子句
SELECT SUM("water_level") FROM "h2o_feet" WHERE time >='2015-08-17T23:48:00Z' AND time <='2015-08-18T00:54:00Z' GROUP BY time(12m),* fill(18000) LIMIT 4 SLIMIT 1
name: h2o_feet
tags: location=coyote_creek
time sum
-------
2015-08-17T23:48:00Z18000
2015-08-18T00:00:00Z16.125
2015-08-18T00:12:00Z15.649
2015-08-18T00:24:00Z15.135
该查询返回measurement h2o_feet
中field key water_level
对应的field value的总和,它涵盖的时间范围在2015-08-17T23:48:00Z
和2015-08-18T00:54:00Z
之间,并将查询结果按12分钟的时间间隔和每个tag进行分组,同时,该查询用18000
填充没有数据的时间间隔,并将返回的数据点个数和序列个数分别限制为4和1。