solo - Calcular porcentaje de grupo a 2 decimales-SQL
sql decimal 2 digits (3)
Pruebe algo como esto:
CAST(ROUND(100.0 * COUNT(*) / tot, 1) AS DECIMAL(10, 1))
Tengo la siguiente consulta:
SELECT hostVersion, CONVERT(varchar, 100.0 * count(*) / tot,1) + ''%'' as ''Percent''
FROM hostInfo,
(SELECT COUNT(*) as tot FROM hostInfo) x
GROUP BY hostVersion, tot
Y reciba el siguiente resultado:
+--------------------------------+
| hostVersion | Percent |
+--------------------------------+
| 5.0.0 | 26.666666666666% |
+--------------------------------+
| 5.1.0 | 73.333333333333% |
+--------------------------------+
¿Cómo redondeo a solo 1 lugar decimal? (es decir, 26.7% y 73.3%)
Una mejor opción para la conversión es la función str()
. (Documentado aquí )
Además, puede hacer su cálculo utilizando las funciones de ventana (suponiendo que está utilizando SQL Server 2005 o más reciente). Aquí está mi versión de la consulta:
select hi.hostVersion,
str(((100.0*count(*)) / sum(count(*)) over ()), 5, 2)+''%''
from hostInfo hi
group by hi.hostVersion
SELECT hostVersion, CONVERT(varchar, ROUND(100.0 * count(*) / tot,2),1) + ''%'' as ''Percent''
FROM hostInfo,
(SELECT COUNT(*) as tot FROM hostInfo) x
GROUP BY hostVersion, tot