无论如何,我可以通过查询结果获取组中结果/点/记录的总数吗?
> 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 2Run Code Online (Sandbox Code Playgroud)
我预计在这种情况下计数为 3。尽管我可以使用这里的时间段和间隔(12m)来计算结果数量,但我想知道是否可以通过查询数据库来做到这一点。
您可以在单个查询中使用多个聚合。使用您的示例添加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
Run Code Online (Sandbox Code Playgroud)
但是,如果您遇到分组依据返回空行的情况,则它们将不被计算在内。
例如,对下表进行计数将得到 2 而不是 3:
name: h2o_feet
--------------
time count
2015-08-18T00:00:00Z 2
2015-08-18T00:12:00Z
2015-08-18T00:24:00Z 2
Run Code Online (Sandbox Code Playgroud)
要在计数中包含空行,您需要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))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10110 次 |
| 最近记录: |