无论如何,我可以通过查询结果获得组中结果/分数/记录总数的计数吗?
> 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)来计算结果的数量,但我想知道是否可以通过查询数据库来实现这一点。
答案 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))