Como calcular % en cada registro en base al total?

07/09/2005 - 16:51 por Manuel Vera | Informe spam
Hola

Tengo una consulta que arroja el siguiente resultado:

id cantidad
414 2396
412 1212
418 21
416 2035

sum
= 5664

(5 filas afectadas)

La consulta es:
select codigo as id, count(*) as cantidad
from MiTabla
group by codigo
compute sum( count(*) )

Ahora bien, necesito anexar una columna "porcentaje" que me indique, en base
al total, el % relativo de cada codigo (id).
Necesariamente tengo que hacer esto:

select codigo as id, count(*) as cantidad
, count(*)*100.00/(select count(*) from MiTabla) as porcentaje
from MiTabla
group by codigo
compute sum( count(*) )

¿O hay otra forma mejor sin usar la sub-consulta?
 

Leer las respuestas

#1 Maxi
07/09/2005 - 18:15 | Informe spam
Hola, y porque no quieres usar Sub_consulta? en este caso el motor no es
nada tonto y sabe que esa columna siempre dara el mismo valor, fijate en los
planes de ejecucion como lo hace y te daras cuenta lo que digo ;-)


Maxi - Buenos Aires - Argentina
Desarrollador 3 Estrellas

Msn_messager:
mail: Maxi.da[arroba]gmail.com

"Manuel Vera" escribió en el mensaje
news:
Hola

Tengo una consulta que arroja el siguiente resultado:

id cantidad
414 2396
412 1212
418 21
416 2035

sum
=> 5664

(5 filas afectadas)

La consulta es:
select codigo as id, count(*) as cantidad
from MiTabla
group by codigo
compute sum( count(*) )

Ahora bien, necesito anexar una columna "porcentaje" que me indique, en
base
al total, el % relativo de cada codigo (id).
Necesariamente tengo que hacer esto:

select codigo as id, count(*) as cantidad
, count(*)*100.00/(select count(*) from MiTabla) as porcentaje
from MiTabla
group by codigo
compute sum( count(*) )

¿O hay otra forma mejor sin usar la sub-consulta?


Preguntas similares