two solo round places numero mostrar float dejar decimals decimales cortar con cast sql sql-server formatting decimal number-formatting

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