Sto cercando di eseguire la seguente query per fornire la% di righe nella mia patients
tabella che hanno un valore nella refinst
colonna. Continuo a ottenere un risultato pari a 0.
select (count (refinst) / (select count(*) from patients) * 100) as "Formula"
from patients;
La tabella ha 15556 righe e select count(refinst) from patients
mi dice che 1446 di questi hanno un valore nella refinst
colonna. La risposta che vorrei ottenere dalla query sarebbe 30.62 ( 1446/15556*100=30.62XXXXX
, arrotondata a due decimali).
Sono abbastanza sicuro che abbia qualcosa a che fare con il tipo di dati dei risultati del conteggio (numeri interi presumo). Se divido un numero intero per un numero intero e il risultato è inferiore a 0, viene troncato a 0 corretto? In tal caso, qualcuno può mostrarmi come eseguire il cast dei risultati dei conteggi come un numero con 2 cifre decimali in modo che il risultato venga arrotondato anche a 2 cifre decimali?
Sono sicuro che esiste un modo migliore per scrivere questo codice rispetto a più istruzioni count. Sto cercando un modo più efficiente per il processore di scrivere questa query in particolare.