• influxDB-查询操作


    influxDB-查询操作

     1 #----综合使用
     2 书写顺序
     3 select distinct * from '表名' where '限制条件'  group by '分组依据' having '过滤条件' order by  limit '展示条数'
     4 执行顺序
     5 from       -- 查询
     6 where      -- 限制条件
     7 group by   -- 分组
     8 having     -- 过滤条件
     9 order by   -- 排序
    10 limit      -- 展示条数
    11 distinct   -- 去重
    12 select     -- 查询的结果

    1.查询数据表weather 的所有记录:

    > select * from weather
    name: weather
    time altitude area humidity temperature
    ---- -------- ---- -------- -----------
    1607604432455278300 1001 南 -5 10
    1607656595672442800 1000 东 -4 9
    1607656662027484500 1001 南 -5 11
    1607656706278952000 999 南 -5 11
    1607656751612223600 1002 西 -2 11
    1607656799728402900 1003 东 -2 11

    2.按条件查询

    #查询temperature=11的数据
    
    > select * from weather where temperature=11
    name: weather
    time                altitude area humidity temperature
    ----                -------- ---- -------- -----------
    1607656662027484500 1001     南    -5       11
    1607656706278952000 999      南    -5       11
    1607656751612223600 1002     西    -2       11
    1607656799728402900 1003     东    -2       11
    
    #查询altitude,temperature两列的数据
    > select altitude,temperature from weather
    name: weather
    time                altitude temperature
    ----                -------- -----------
    1607604432455278300 1001     10
    1607656595672442800 1000     9
    1607656662027484500 1001     11
    1607656706278952000 999      11
    1607656751612223600 1002     11
    1607656799728402900 1003     11

    3.排序

    #按最新时间排序
    > select * from weather order by time desc
    name: weather
    time                altitude area humidity temperature
    ----                -------- ---- -------- -----------
    1607656799728402900 1003     东    -2       11
    1607656751612223600 1002     西    -2       11
    1607656706278952000 999      南    -5       11
    1607656662027484500 1001     南    -5       11
    1607656595672442800 1000     东    -4       9
    1607604432455278300 1001     南    -5       10
    
    #按最早时间排序
    > select * from weather order by time asc
    name: weather
    time                altitude area humidity temperature
    ----                -------- ---- -------- -----------
    1607604432455278300 1001     南    -5       10
    1607656595672442800 1000     东    -4       9
    1607656662027484500 1001     南    -5       11
    1607656706278952000 999      南    -5       11
    1607656751612223600 1002     西    -2       11
    1607656799728402900 1003     东    -2       11
    

    4.去重 (distinct)

    > select distinct humidity from weather
    name: weather
    time distinct
    ---- --------
    0    -5
    0    -4
    0    -2

    5.group by

    select 查询字段1,查询字段2,... from 表名
          where 过滤条件
          group by分组依据  # 分组后取出的是每个组的第一条数据
    > select * from weather group by area
    name: weather
    tags: area=东
    time                altitude humidity temperature
    ----                -------- -------- -----------
    1607656595672442800 1000     -4       9
    1607656799728402900 1003     -2       11
    
    name: weather
    tags: area=南
    time                altitude humidity temperature
    ----                -------- -------- -----------
    1607604432455278300 1001     -5       10
    1607656662027484500 1001     -5       11
    1607656706278952000 999      -5       11
    
    name: weather
    tags: area=西
    time                altitude humidity temperature
    ----                -------- -------- -----------
    1607656751612223600 1002     -2       11

    6.聚合

     ①count()函数

    返回一个(field)字段中的非空值的数量。

    SELECT COUNT(<field_key>) FROM <measurement_name> [WHERE <stuff>] [GROUP BY <stuff>]

    > select count(humidity) from weather
    name: weather
    time count
    ---- -----
    0    6

    ②MEAN() 函数

    返回一个字段(field)中的值的算术平均值(平均值)。字段类型必须是长整型或float64。

    语法格式:SELECT MEAN(<field_key>) FROM <measurement_name> [WHERE <stuff>] [GROUP BY <stuff>]

    > SELECT MEAN(humidity) from weather
    name: weather
    time mean
    ---- ----
    0    -3.8333333333333335

    ③MEDIAN()函数

    从单个字段(field)中的排序值返回中间值(中位数)。中值是在一组数值中居于中间的数值。字段值的类型必须是长整型或float64格式。

    语法:SELECT MEDIAN(<field_key>) FROM <measurement_name> [WHERE <stuff>] [GROUP BY <stuff>]

    > SELECT MEAN(humidity) from weather
    name: weather
    time mean
    ---- ----
    0    -3.8333333333333335

    ④SPREAD()函数

    返回字段的最小值和最大值之间的差值。数据的类型必须是长整型或float64。

    语法:SELECT SPREAD(<field_key>) FROM <measurement_name> [WHERE <stuff>] [GROUP BY <stuff>]

    > select spread(humidity) from weather
    name: weather
    time spread
    ---- ------
    0    3

    ⑤SUM()函数

    返回一个字段中的所有值的和。字段的类型必须是长整型或float64。

    语法:SELECT SUM(<field_key>) FROM <measurement_name> [WHERE <stuff>] [GROUP BY <stuff>

    > select sum(humidity) from weather
    name: weather
    time sum
    ---- ---
    0    -23

    ⑥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] 

    > select INTEGRAL(temperature) from weather
    name: weather
    time integral
    ---- --------
    0    497728.82358215

    ⑦distinc()函数

    > select distinct(temperature) from weather
    name: weather
    time distinct
    ---- --------
    0    10
    0    9
    0    11

    7.limit限制条数

    #显示一条信息
    > select * from weather limit 1
    name: weather
    time                altitude area humidity temperature
    ----                -------- ---- -------- -----------
    1607604432455278300 1001-5       10
    
    #limit 10 offset 15,就是从第15行开始之后的10条数据
    > select * from weather limit 2 offset 2
    name: weather
    time                altitude area humidity temperature
    ----                -------- ---- -------- -----------
    1607656662027484500 1001-5       11
    1607656706278952000 999-5       11

    8.or

    influxDB中没有in的操作,但是有or。对于习惯了mysql的in来说,用or就需要在代码中循环了。

    > select * from weather where altitude=1001 or temperature=11
    name: weather
    time                altitude area humidity temperature
    ----                -------- ---- -------- -----------
    1607656662027484500 1001-5       11
    1607656706278952000 999-5       11
    1607656751612223600 1002     西    -2       11
    1607656799728402900 1003-2       11

    9.模糊查询

    > select * from test
    name: test
    time                app count host      monitor_name num
    ----                --- ----- ----      ------------ ---
    1585897703920290000     1     127.0.0.1 test         
    1585897983909417000 ios 2     127.0.0.1 test1        3
    1585898383503216000 ios 2     127.0.0.1 test1        3
    1585901694441000000 ios 2     127.0.0.1 app1         3
    1585901704179677000 ios 2     127.0.0.1 ios1         3
    ## =~/给定字段/ 包含指定字段的
    > select * from test where monitor_name =~/app/
    name: test
    time                app count host      monitor_name num
    ----                --- ----- ----      ------------ ---
    1585901694441000000 ios 2     127.0.0.1 app1         3
    ##=~/^给定字段/ 以指定字段开始的
    > select * from test where monitor_name =~/^app/
    name: test
    time                app count host      monitor_name num
    ----                --- ----- ----      ------------ ---
    1585901694441000000 ios 2     127.0.0.1 app1         3
    ##=~/给定字段$/ 以指定字段结尾的
    > select * from test where monitor_name =~/p1$/
    name: test
    time                app count host      monitor_name num
    ----                --- ----- ----      ------------ ---
    1585901694441000000 ios 2     127.0.0.1 app1         3

    10.展示tag

    > show tag keys from weather
    name: weather
    tagKey
    ------
    altitude
    area
    #查询单个tag的value值
    
    #查询所以tag为altitude的value的值
    > show tag values from weather with key="altitude"
    name: weather
    key      value
    ---      -----
    altitude 1000
    altitude 1001
    altitude 1002
    altitude 1003
    altitude 999
  • 相关阅读:
    数据库连接单例模式
    魔术方法
    序列化与反序列化
    设计模式
    类的自动加载
    错误处理
    匿名类--php7.0以上
    OpenCV中HSV颜色模型及颜色分量范围
    Opencv 轮廓提取
    opencv 二值化_OpenCV二值图像案例分析精选 | 第二期
  • 原文地址:https://www.cnblogs.com/Bluebells/p/14120368.html
Copyright © 2020-2023  润新知