• influxDB选择类函数


    1)TOP()函数

    作用:返回一个字段中最大的N个值,字段类型必须是长整型或float64类型。

    语法:

    SELECT TOP(<field_key>[,<tag_keys>],<N>)[,<tag_keys>] FROM <measurement_name> [WHERE <stuff>] [GROUP BY <stuff>]
    例子1
    选择3个water_level最大值
    SELECT TOP(water_level,3) FROM h2o_feet
    结果
    name: h2o_feet
    --------------
    time			   top
    2015-08-29T07:18:00Z	 9.957
    2015-08-29T07:24:00Z	 9.964
    2015-08-29T07:30:00Z	 9.954

    例子2
    选择3个water_level最大值,并在输出中包含相关的location标记:
    SELECT TOP(water_level,3),location FROM h2o_feet
    结果
    name: h2o_feet
    --------------
    time			   top	   location
    2015-08-29T07:18:00Z	 9.957	 coyote_creek
    2015-08-29T07:24:00Z	 9.964	 coyote_creek
    2015-08-29T07:30:00Z	 9.954	 coyote_creek
    例子3
    选择在2个location标签的最大值
    SELECT TOP(water_level,location,2) FROM h2o_feet
    结果
    name: h2o_feet
    --------------
    time			   top	   location
    2015-08-29T03:54:00Z	 7.205	 santa_monica
    2015-08-29T07:24:00Z	 9.964	 coyote_creek
    输出显示的位置每个标签值water_level最高值(santa_monica和coyote_creek)。
    注:查询语法SELECT TOP(<field_key>,<tag_key>,<N>),标签在哪里有X的不同的值,返回n或x字段的值,以较小者为准,并返回的每个点有一个独特的标签值。要演示这种行为,请参见上面示例查询的结果,其中n等于3,n等于1。
    • N = 3
    SELECT TOP(water_level,location,3) FROM h2o_feet
    结果
    name: h2o_feet -------------- time top location 2015-08-29T03:54:00Z 7.205 santa_monica 2015-08-29T07:24:00Z 9.964 coyote_creek
    返回两个值而不是三InfluxDB因为位置标签只有两个值(santa_monica和coyote_creek)。
    • N = 1
    SELECT TOP(water_level,location,1) FROM h2o_feet
    结果
    name: h2o_feet
    --------------
    time			  top	   location
    2015-08-29T07:24:00Z	 9.964	 coyote_creek
    比较water_level InfluxDB顶值在每个标签的位置值并返回water_level的较大值。

    例子4
    选择最大water_level 2个值,范围2015年8月18日 4点与2015年8月18日4点18分,范围每个location标签
    SELECT TOP(water_level,2) FROM h2o_feet WHERE time >= '2015-08-18T04:00:00Z' AND time < '2015-08-18T04:24:00Z' GROUP BY location
    结果
    name: h2o_feet
    tags: location=coyote_creek
    time			  top
    ----			               ---
    2015-08-18T04:00:00Z	 2.943
    2015-08-18T04:06:00Z	 2.831
    
    
    name: h2o_feet
    tags: location=santa_monica
    time			   top
    ----			               ---
    2015-08-18T04:06:00Z	 4.055
    2015-08-18T04:18:00Z	 4.124

    例子5
    选择wtaer_level最大的2个值,在范围2015年8月18日 4点与2015年8月18日4点18分,location为santa_monica
    SELECT TOP(water_level,2) FROM h2o_feet WHERE time >= '2015-08-18T04:00:00Z' AND time < '2015-08-18T04:24:00Z' AND location = 'santa_monica'
    name: h2o_feet
    --------------
    time			  top
    2015-08-18T04:06:00Z	 4.055
    2015-08-18T04:18:00Z	 4.124


    值得注意的是原始数据,water_level等于4.055在2015-08-18t04:06:00z和2015-08-18t04:12:00z。在相同的情况下,InfluxDB返回值更早的那个时间戳。

    2、BOTTOM()函数

    作用:返回一个字段中最小的N个值。字段类型必须是长整型或float64类型。

    语法:

    SELECT BOTTOM(<field_key>[,<tag_keys>],<N>)[,<tag_keys>] FROM <measurement_name> [WHERE <stuff>] [GROUP BY <stuff>]
    例子1
    选择三个最小值
    SELECT BOTTOM(water_level,3) FROM h2o_feet
    结果
    name: h2o_feet
    --------------
    time			 bottom
    2015-08-29T14:30:00Z	 -0.61
    2015-08-29T14:36:00Z	 -0.591
    2015-08-30T15:18:00Z	 -0.594

    例子2
    选择三个最小值,在输出中包含相关的location标签:
    SELECT BOTTOM(water_level,3),location FROM h2o_feet
    name: h2o_feet
    --------------
    time			bottom	 location
    2015-08-29T14:30:00Z	 -0.61	  coyote_creek
    2015-08-29T14:36:00Z	 -0.591	 coyote_creek
    2015-08-30T15:18:00Z	 -0.594	 coyote_creek

    例子3
    选择2个location最小值
    SELECT BOTTOM(water_level,location,2) FROM h2o_feet

    结果
    name: h2o_feet
    --------------
    time			 bottom	 location
    2015-08-29T10:36:00Z	 -0.243	 santa_monica
    2015-08-29T14:30:00Z	 -0.61	  coyote_creek

    输出显示的位置每个标签值water_level底值(santa_monica和coyote_creek)。
    注:查询语法select(< field_key >,< tag_key >,<n>),标签在哪里有X的不同的值,返回n或x字段的值,以较小者为准,并返回的每个点有一个独特的标签值。要演示这种行为,请参见上面示例查询的结果,其中n等于3,n等于1。

    N = 3
    SELECT BOTTOM(water_level,location,3) FROM h2o_feet
    结果
    name: h2o_feet
    --------------
    time			bottom	 location
    2015-08-29T10:36:00Z	 -0.243	 santa_monica
    2015-08-29T14:30:00Z	 -0.61	  coyote_creek
     返回两个值而不是三InfluxDB因为位置标签只有两个值(santa_monica和coyote_creek)。
    • N = 1
    SELECT BOTTOM(water_level,location,1) FROM h2o_feet
    结果
    name: h2o_feet
    --------------
    time			bottom	 location
    2015-08-29T14:30:00Z	 -0.61	  coyote_creek
    InfluxDB比较water_level底值在每个标签的位置值并返回water_level值越小。

    例子4
    每个location标签选择两个最小值 ,范围在2015年8月18日4点和2015年8月18日4点18分。
    SELECT BOTTOM(water_level,2) FROM h2o_feet WHERE time >= '2015-08-18T04:00:00Z' AND time < '2015-08-18T04:24:00Z' GROUP BY location

    name: h2o_feet
    tags: location=coyote_creek
    time			 bottom
    ----			------
    2015-08-18T04:12:00Z	 2.717
    2015-08-18T04:18:00Z	 2.625
    
    
    name: h2o_feet
    tags: location=santa_monica
    time			  bottom
    ----			------
    2015-08-18T04:00:00Z	 3.911
    2015-08-18T04:06:00Z	 4.055

    例子5
    选择最小的两个值,在2015年8月18日4点和2015年8月18日4点18分,location为santa_monica

    SELECT BOTTOM(water_level,2) FROM h2o_feet WHERE time >= '2015-08-18T04:00:00Z' AND time < '2015-08-18T04:24:00Z' AND location = 'santa_monica'
    结果
    name: h2o_feet -------------- time bottom 2015-08-18T04:00:00Z 3.911 2015-08-18T04:06:00Z 4.055
    值得注意的是原始数据,water_level等于4.055在2015-08-18t04:06:00z和2015-08-18t04:12:00z。在相同的情况下,InfluxDB返回值更早的那个时间戳。

    3)FIRST()函数

    作用:返回一个字段中最老的取值。

    语法:

    SELECT FIRST(<field_key>)[,<tag_key(s)>] FROM <measurement_name> [WHERE <stuff>] [GROUP BY <stuff>]
    例子1
    选择locaction 为santa_monica,water_level最老的值
    SELECT FIRST(water_level) FROM h2o_feet WHERE location = 'santa_monica'
    结果
    name: h2o_feet
    --------------
    time			 first
    2015-08-18T00:00:00Z	 2.064
    例子2
    选择最老的water_level,2015-08-18T00:42:00Z 与 2015-08-18T00:54:00Z之间,并输出location tag
    SELECT FIRST(water_level),location FROM h2o_feet WHERE time >= '2015-08-18T00:42:00Z' and time <= '2015-08-18T00:54:00Z'
    结果
    name: h2o_feet
    --------------
    time			 first	 location
    2015-08-18T00:42:00Z	 7.234	 coyote_creek

    例子3
    选择最老的water_level,以location分组
    SELECT FIRST(water_level) FROM h2o_feet GROUP BY location
    结果
    name: h2o_feet
    tags: location = coyote_creek
    time			 first
    ----			-----
    2015-08-18T00:00:00Z	 8.12
    
    name: h2o_feet
    tags: location = santa_monica
    time			first
    ----			-----
    2015-08-18T00:00:00Z	 2.064

    4)LAST()函数

    作用:返回一个字段中最新的取值。

    语法:

    SELECT LAST(<field_key>)[,<tag_key(s)>] FROM <measurement_name> [WHERE <stuff>] [GROUP BY <stuff>]
    例子1
    以location为santa_monica为条件,选择最新的water_level
    SELECT LAST(water_level) FROM h2o_feet WHERE location = 'santa_monica'
    结果
    name: h2o_feet
    --------------
    time			 last
    2015-09-18T21:42:00Z	 4.938

    例子2
    2015-08-18T00:42:00Z 与 2015-08-18T00:54:00Z之间,选择最新的water_level,并输出location tag
    SELECT LAST(water_level),location FROM h2o_feet WHERE time >= '2015-08-18T00:42:00Z' and time <= '2015-08-18T00:54:00Z'
    结果
    name: h2o_feet
    --------------
    time			 last	  location
    2015-08-18T00:54:00Z	 6.982	 coyote_creek
    例子2
    选择最新的water_level,以location分组
    SELECT LAST(water_level) FROM h2o_feet GROUP BY location
    结果
    name: h2o_feet
    tags: location = coyote_creek
    time			 last
    ----			 ----
    2015-09-18T16:24:00Z	 3.235
    
    name: h2o_feet
    tags: location = santa_monica
    time			 last
    ----			 ----
    2015-09-18T21:42:00Z	 4.938
    Note: LAST() does not return points that occur after now() unless the WHERE clause specifies that time range. See Frequently Encountered Issues for how to query after now().

    5)MAX()函数

    作用:返回一个字段中的最大值。该字段类型必须是长整型,float64,或布尔类型。

    语法:

    SELECT MAX(<field_key>)[,<tag_key(s)>] FROM <measurement_name> [WHERE <stuff>] [GROUP BY <stuff>]
    例子1
    选择表h2o_feet中最大的值water_level
    SELECT MAX(water_level) FROM h2o_feet
    结果
    name: h2o_feet
    --------------
    time			  max
    2015-08-29T07:24:00Z	 9.964
    例子2
    选择表h2o_feet中最大的值water_level,并输出location tag
    SELECT MAX(water_level),location FROM h2o_feet
    结果
    name: h2o_feet
    --------------
    time			 max	   location
    2015-08-29T07:24:00Z	 9.964	 coyote_creek
    例子3
    每12分选择表h2o_feet中每个location最大的值water_level,指定的时间范围
    SELECT MAX(water_level) FROM h2o_feet WHERE time >= '2015-08-18T00:00:00Z' AND time < '2015-08-18T00:54:00Z' GROUP BY time(12m), location
    name: h2o_feet
    tags: location = coyote_creek
    time			 max
    ----		  	 ---
    2015-08-18T00:00:00Z	  8.12
    2015-08-18T00:12:00Z	  7.887
    2015-08-18T00:24:00Z	  7.635
    2015-08-18T00:36:00Z	  7.372
    2015-08-18T00:48:00Z	  7.11
    
    name: h2o_feet
    tags: location = santa_monica
    time			 max
    ----		  	---
    2015-08-18T00:00:00Z	  2.116
    2015-08-18T00:12:00Z	  2.126
    2015-08-18T00:24:00Z	  2.051
    2015-08-18T00:36:00Z	  2.067
    2015-08-18T00:48:00Z	  1.991

    6)MIN()函数

    作用:返回一个字段中的最小值。该字段类型必须是长整型,float64,或布尔类型。

    语法:

    SELECT MIN(<field_key>)[,<tag_key(s)>] FROM <measurement_name> [WHERE <stuff>] [GROUP BY <stuff>]
    例子1
    选择表h2o_feet中最小的值water_level
    SELECT MIN(water_level) FROM h2o_feet
    结果
    name: h2o_feet
    --------------
    time			  min
    2015-08-29T14:30:00Z	 -0.61
    例子2
    选择表h2o_feet中最小的值water_level,并输出location tag
    SELECT MIN(water_level),location FROM h2o_feet
    结果
    name: h2o_feet
    --------------
    time			min	   location
    2015-08-29T14:30:00Z	-0.61	 coyote_creek
    例子3
    每12分选择表h2o_feet中每个location最小的值water_level,指定的时间范围
    SELECT MIN(water_level) FROM h2o_feet WHERE time >= '2015-08-18T00:00:00Z' AND time < '2015-08-18T00:54:00Z' GROUP BY time(12m), location
    结果
    name: h2o_feet
    tags: location = coyote_creek
    time			  min
    ----			  ---
    2015-08-18T00:00:00Z	   8.005
    2015-08-18T00:12:00Z	   7.762
    2015-08-18T00:24:00Z	   7.5
    2015-08-18T00:36:00Z	   7.234
    2015-08-18T00:48:00Z	   7.11
    
    name: h2o_feet
    tags: location = santa_monica
    time			    min
    ----			    ---
    2015-08-18T00:00:00Z	   2.064
    2015-08-18T00:12:00Z	   2.028
    2015-08-18T00:24:00Z	   2.041
    2015-08-18T00:36:00Z	   2.057
    2015-08-18T00:48:00Z	   1.991

    7)PERCENTILE()函数

    作用:返回排序值排位为N的百分值。字段的类型必须是长整型或float64。

    百分值是介于100到0之间的整数或浮点数,包括100。

    语法:

    SELECT PERCENTILE(<field_key>, <N>)[,<tag_key(s)>] FROM <measurement_name> [WHERE <stuff>] [GROUP BY <stuff>]
    例子1
    计算location为coyote_creek,排位为5%的water_level值。
     SELECT PERCENTILE(water_level,5) FROM h2o_feet WHERE location = 'coyote_creek'
    结果
    : h2o_feet
    --------------
    time		       percentile
    2015-09-09T11:42:00Z	 1.148
    解释:
    就是将water_level字段按照不同的location求百分比,然后取第五位数据。
    值1.148大于5%的位置的值(The value 1.148 is larger than 5% of the values in water_level where location equals coyote_creek.)
    例子2
    计算location为coyote_creek,排位为5%的water_level值,并输出location tag。
    SELECT PERCENTILE(water_level,5),location FROM h2o_feet
    结果
    name: h2o_feet
    --------------
    time	                  percentile	 location
    2015-08-28T12:06:00Z	  1.122		 santa_monica
    例子2
    计算以location分组,排在100%的值
    SELECT PERCENTILE(water_level, 100) FROM h2o_feet GROUP BY location
    结果
    name: h2o_feet
    tags: location = coyote_creek
    time			 percentile
    ----			  ----------
    2015-08-29T07:24:00Z	 9.964
    
    name: h2o_feet
    tags: location = santa_monica
    time			 percentile
    ----			 ----------
    2015-08-29T03:54:00Z	 7.205
    注意:PERCENTILE(<field_key>,100)相当于MAX(<field_key>)
    目前,PERCENTILE(<field_key>,0)不相当于MIN(<field_key>)
    注意,PERCENTILE(<field_key>, 50)接近于MEDIAN(),MEDIAN()如果是偶娄个则返回中间两个值的平均值
    详细资料可参考官网:https://docs.influxdata.com/influxdb/v1.3/query_language/functions
     
     
     
  • 相关阅读:
    二分图匹配初步
    动态规划初步
    一些排日程的经典方法
    petri网初步
    笔记:美国院士教你写论文
    Ubuntu18.04彻底删除MySQL数据库
    ubuntu18.04 安装 wps2019
    ubuntu18.04 阿里镜像源
    Ubuntu 18.04 使用标准Ubuntu 仓库进行自动化安装NVIDIA驱动
    linux maven环境变量配置
  • 原文地址:https://www.cnblogs.com/michellexiaoqi/p/7256282.html
Copyright © 2020-2023  润新知