官网传送门:https://docs.influxdata.com/influxdb/v1.7/query_language/data_exploration/
InfluxDB Studio:https://github.com/CymaticLabs/InfluxDBStudio
Meaning | Operator |
---|---|
等于 | = |
不等于 | != 、<> |
大于 | > |
大于等于 | >= |
小于 | < |
小于等于 | <= |
与mysql的分组规则基本一致,值得注意的点是:
(1)influxdb中使用 time(),如 group by time(1d)
为以1天为分组
(2)使用 group by
时分组的字段会连同查询的字段一起输出,而查询的字段只能是聚合函数
如下:
select count(CJSJ) AS total,count(LJNSXH) as ljnsxhtotal FROM tableName GROUP BY time(1d), SBXLH fill(0)
输出:total,ljnsxhtotal,SBXLH,time
(1)influxdb中使用聚合函数与mysql存在差异,influxdb中的聚合函数只能使用基础的功能,如count(1)
不可使用,可使用count(字段)
返回字段有数据的总条数,不能使用count(time)
(2)聚合函数内加条件
如:count(字段=0 or NULL)
,sum(字段+字段)
,sum(CASE when online = 1 then 1 else 0 end)
等,这些在influxdb中都不具备这种功能,需要加条件只能在where添加筛选
官网:https://docs.influxdata.com/influxdb/v1.7/flux/guides/group-data/
给空数据赋予某个值,如下,给是空值的赋予0(可以赋予其它值,如-1、2),只能位于sql所有条件之后
select * from tableName fill(0)
官网:https://docs.influxdata.com/influxdb/v1.7/flux/guides/fill/
FIRST()/LAST()
返回按时间排序的第一条/最新一条非空数据
(1)返回第一条数据 first(time)
(2)返回最新一条数据,last(time)
如下,返回采集时间最新的一条数据:
SELECT LAST("CJSJ") AS "CJSJ",SBXLH FROM "processdata" group by "SBXLH"
// or
SELECT LAST("CJSJ") AS "CJSJ",COUNT(CJSJ) AS total FROM "processdata"
时序数据库中的排序只能用于time 进行排序
意义 | 符号 |
---|---|
微秒 | u or µ |
毫秒 | ms |
秒 | s |
分 | m |
时 | h |
天 | d |
周 | w |
(1)查询过去七天的数据
select * from tableName where time > now()-7d
(2)查询过去5分钟的数据
select * from tableName where time > now()-5m
(3)查询昨天的数据
使用 new Date().getTime() 的前十位数,time的时间格式为2022-04-13T02:33:34.000000001z
select * from tableName where time >= 1649865600s and time <= 1649951999s
也可以使用的格式为
select * from tableName where time >= '2022-04-13T16:00:00Z' and time <= '2022-04-14T15:59:59Z'
查询昨天与查询过去一天的时间范围是不一样的,查询过去一天的数据当前时间往前24小时
已安装influxdb的前提下
(1)连接
influx
(2)用户登录
auth
show databases
use mydb
(5)查看连续查询
show continuous queries
(6)查询
select * from tables