Influxdb:如何通过查询获取组中结果数的计数

时间:2017-06-26 13:02:41

标签: influxdb

无论如何,我可以通过查询结果获得组中结果/分数/记录总数的计数吗?

> SELECT COUNT("water_level") FROM "h2o_feet" WHERE "location"='coyote_creek' AND time >= '2015-08-18T00:00:00Z' AND time <= '2015-08-18T00:30:00Z' GROUP BY time(12m)

name: h2o_feet
--------------
time                   count
2015-08-18T00:00:00Z   2
2015-08-18T00:12:00Z   2
2015-08-18T00:24:00Z   2

在这种情况下,我希望计数为3。虽然我可以在这里使用时间段和间隔(12m)来计算结果的数量,但我想知道是否可以通过查询数据库来实现这一点。

2 个答案:

答案 0 :(得分:1)

您需要做一些手工操作。直接运行,

$ influx -execute "select * from measurement_name" -database="db_name" | wc -l

这将比实际值返回4个。

这是一个例子,

luvpreet@DHARI-Inspiron-3542:~/www$ influx -execute "select * from yprices" -database="vehicles" | wc -l
5

luvpreet@DHARI-Inspiron-3542:~/www$ influx -execute "select * from yprices" -database="vehicles" 
name: yprices
time                price
----                -----
1493626629063286219 2

luvpreet@DHARI-Inspiron-3542:~/www$ 

所以,我想你现在知道为什么从价值中减去4了。

答案 1 :(得分:0)

您可以使用Multiple Aggregates in single query。 使用您的示例添加一个select count(*) from (<inner query>)

> SELECT COUNT(*) FROM (SELECT COUNT("water_level") FROM "h2o_feet" WHERE "location"='coyote_creek' AND time >= '2015-08-18T00:00:00Z' AND time <= '2015-08-18T00:30:00Z' GROUP BY time(12m))

name: h2o_feet
--------------
time                   count_count
1970-01-01T00:00:00Z   3

但是,如果您遇到分组依据返回空行的情况,则不计入空行。

例如,对下表进行计数将得出2而不是3:

name: h2o_feet
--------------
time                   count
2015-08-18T00:00:00Z   2
2015-08-18T00:12:00Z   
2015-08-18T00:24:00Z   2

要在计数中包括空行,您需要像这样向查询中添加fill(1)

> SELECT COUNT(*) FROM (SELECT COUNT("water_level") FROM "h2o_feet" WHERE "location"='coyote_creek' AND time >= '2015-08-18T00:00:00Z' AND time <= '2015-08-18T00:30:00Z' GROUP BY time(12m) fill(1))