Ich habe eine Anforderung, wo ich eine SELECT-Abfrage mit einer WHERE-Klausel und einer Gruppe durch ausführen möchte. Es gibt nur wenige Zeilen aus, aus denen ich die Zeilen auswählen möchte, die am wenigsten sind.SELECT-Abfrage zur Auswahl basierend auf der Anzahl der Zeilen
Beispiel:
table t1:
host_name application type
host1 app1 0
host2 app2 0
host3 app4 0
host1 app5 0
host2 app6 0
host1 app7 1
host2 app8 1
In der obigen Tabelle möchte ich den Host bekommen, die am wenigsten belastet ist.
host1 läuft app1
, app5
, app7
.
host2 läuft app2
, app6
, app8
.
host3 läuft nur app4
.
so Host3 ist am wenigsten geladen. Wenn ich die Abfrage ausführe, sollte die Ausgabe "host3" sein. Zeilen von type=0
müssen nur ausgewählt werden.
Ich habe eine Lösung. Aber ist es optimiert? Gibt es einen optimalen Weg dies zu erreichen?
SELECT host_name from (SELECT host_name, min(count) FROM (SELECT host_name, COUNT(*) as count FROM t1 where type=0 group by host_name) as Dup ORDER BY host_name);
Vielen Dank im Voraus :)
Sie immer 1 Zeile, die Sie brauchen? –
Ja Ich brauche eine einzelne Zeile mit Hostnamen. –