influxDB-查询操作

influxDB-查询操作

#----综合使用
书写顺序
select distinct * from '表名' where '限制条件'  group by '分组依据' having '过滤条件' order by  limit '展示条数'
执行顺序
from       -- 查询
where      -- 限制条件
group by   -- 分组
having     -- 过滤条件
order by   -- 排序
limit      -- 展示条数
distinct   -- 去重
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    3SUM()函数

返回一个字段中的所有值的和。字段的类型必须是长整型或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
 
  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值