2017-12-11 1 views
0

Ich habe einige Daten bekam strukturiert als solcheGraf von Unter wählen in influxdb nichts Rückkehr

select * from rules where time > now() - 1m limit 5

name: rules 
time    ackrate consumers deliverrate hostname publishrate ready redeliverrate shard unacked version 
----    ------- --------- ----------- -------- ----------- ----- ------------- ----- ------- ------- 
1513012628943000000 864  350  861.6  se-rabbit14 975.8  0  0    14 66  5 
1513012628943000000 864.8 350  863   se-rabbit9 920.8  0  0    09 64  5 
1513012628943000000 859.8 350  860.2  se-rabbit8 964.2  0  0    08 58  5 
1513012628943000000 864.8 350  863.6  se-rabbit16 965.4  0  0    16 64  5 
1513012631388000000 859.8 350  860.2  se-rabbit8 964.2  0  0    08 58  5 

Ich möchte den Prozentsatz der ‚Up-Zeit‘ definiert als die Menge berechnen der Zeit, wenn die Warteschlange keine bereit Nachrichten hat.

Ich kann die maximale Anzahl der bereit in jeder Minute erhalten

select max(ready) from rules where time > now() - 1h group by time(1m) limit 5

name: rules 
time    max 
----    --- 
1513009560000000000 0 
1513009620000000000 0 
1513009680000000000 0 
1513009740000000000 0 
1513009800000000000 0 

eine Unterabfrage verwenden, ich nur die Minuten auswählen können, die Werte bereit haben.

select ready from (select max(ready) as ready from rules where time > now() - 1h group by time(1m)) where ready > 0

name: rules 
time    ready 
----    ----- 
1513010520000000000 49 
1513013280000000000 57 

Ich wollte eine Zählung dieser Werte bekommen und dann einen Prozentsatz ein bisschen Mathematik berechnen zu tun. In diesem Fall mit 2 Ergebnissen in der letzten Stunde,

((60 Minuten * 1 Stunde) - 2)/(60 Minuten * 1 Stunde)) == 96%

Wenn ich versuche, diese zu zählen obwohl ich keine Antwort bekomme.

select count(ready) from (select max(ready) as ready from rules where time > now() - 1h group by time(1m)) where ready > 0

Dies ist v1.2.2.

Wie kann ich die Anzahl der Ergebnisse zurückgeben?

Antwort

0

Die Lösung bestand einfach darin, von v1.2.2 auf v1.3.8 zu aktualisieren. Verwenden der späteren Version.

select count(ready) from (select max(ready) as ready from rules where time > now() - 1h group by time(1m)) where ready > 0 
name: rules 
time count 
---- ----- 
0 6