我在influxdb中有以下数据。
time count http_status
---- ----- -----------
1532500250000000000 105058 200
1532500250000000000 11 499
1532500260000000000 108119 200
1532500260000000000 9 499
1532500260000000000 2 400
1532500270000000000 8 499
1532500270000000000 1 400
1532500270000000000 105321 200
1532500280000000000 1 400
1532500280000000000 106611 200
1532500280000000000 15 499
1532500290000000000 105572 200
1532500290000000000 9 499
1532500290000000000 5 400http_status为我的接口状态。
我想要在这个度量上创建一个连续的查询,以生成我的api的成功率,它应该计算如下
count(http_status == 200) / count(all apis)我知道逻辑很简单。但是我没能写出一个涌入的sql来生成它。所以我在这里写来寻求帮助。
提前谢谢。
发布于 2018-07-27 19:03:19
一种方法是在select子句中使用相关子查询:
SELECT
time,
count,
http_status,
(SELECT SUM(CASE WHEN t2.http_status = 200 THEN 1 ELSE 0 END)
FROM yourTable t2
WHERE t2.time <= t1.time) /
(SELECT COUNT(*) FROM yourTable t2 WHERE t2.time <= t1.time) AS ratio
FROM yourTable t1;如果InfluxDB支持分析函数,那么我们可以使用另一种方法来编写上面的查询。
https://stackoverflow.com/questions/51556586
复制相似问题