Ich versuche, die folgende Abfrage auszuführen, um den Prozentsatz der Zeilen in meiner patientsTabelle anzugeben, die einen Wert für die refinstSpalte 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 patientshaben 1446 einen Wert in der refinstSpalte. Die Antwort, die ich von der Abfrage erhalten möchte, wäre 30,62 ( 1446/15556*100=30.62XXXXXauf 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.