Estoy tratando de ejecutar la siguiente consulta para proporcionar el% de filas en mi patientstabla que tienen un valor en la refinstcolumna. Sigo obteniendo un resultado de 0.
select (count (refinst) / (select count(*) from patients) * 100) as "Formula"
from patients;
La tabla tiene 15556 filas y select count(refinst) from patientsme dice que 1446 de ellas tienen un valor en la refinstcolumna. La respuesta que me gustaría obtener de la consulta sería 30.62 ( 1446/15556*100=30.62XXXXXredondeada a dos decimales).
Estoy bastante seguro de que tiene algo que ver con el tipo de datos de los resultados del recuento (supongo que enteros). Si divido un entero por un entero y el resultado es menor que 0, ¿se trunca a 0 correcto? Si ese es el caso, ¿alguien puede mostrarme cómo convertir los resultados de los recuentos como un número con 2 decimales para que el resultado también se redondee a 2 decimales?
Estoy seguro de que hay una mejor manera de escribir este código que las declaraciones de recuento múltiple. Estoy buscando una forma más eficiente de procesador para escribir esta consulta en particular.