Ich versuche, die folgende Abfrage auszuführen, um den Prozentsatz der Zeilen in meiner patients
Tabelle anzugeben, die einen Wert für die refinst
Spalte haben. Ich bekomme immer ein Ergebnis von 0.
select (count (refinst) / (select count(*) from patients) * 100) as "Formula"
from patients;
Die Tabelle enthält 15556 Zeilen. Davon select count(refinst) from patients
haben 1446 einen Wert in der refinst
Spalte. Die Antwort, die ich von der Abfrage erhalten möchte, wäre 30,62 ( 1446/15556*100=30.62XXXXX
auf zwei Dezimalstellen gerundet).
Ich bin mir ziemlich sicher, dass es etwas mit dem Datentyp der Zählergebnisse zu tun hat (Ganzzahlen nehme ich an). Wenn ich eine Ganzzahl durch eine Ganzzahl dividiere und das Ergebnis kleiner als 0 ist, wird es auf 0 abgeschnitten, richtig? Wenn dies der Fall ist, kann mir jemand zeigen, wie ich die Ergebnisse der Zählungen als Zahl mit 2 Dezimalstellen ausgeben kann, sodass das Ergebnis ebenfalls auf 2 Dezimalstellen gerundet wird?
Ich bin mir sicher, dass es einen besseren Weg gibt, diesen Code zu schreiben, als mehrere count-Anweisungen. Ich bin auf der Suche nach einer prozessoreffizienteren Methode, um diese Abfrage zu schreiben.