有没有办法通过查询结果得到一组中结果/点/记录的总数?
> 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) 计算结果数,但我想知道是否可以通过查询数据库来计算结果数。
最佳答案
您可以使用 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))
关于Influxdb:如何通过查询获取组中的结果数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44760431/