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?

Preguntas similare

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?


Respuesta Responder a este mensaje
#2 Manuel Vera
07/09/2005 - 19:26 | Informe spam
Yo imaginaba que la sub_consulta se ejecutaría por cada registro.
Según lo que dices y yo entiendo, el motor al detectar que el resultado es
siempre el mismo optimiza el plan para una ejecución única.
Revisaré como dices a ver que sale.
Yo pedía otra manera de hacerlo pues hay varias tablas involucradas (2).
Gracias.
Manuel

"Maxi" wrote in message
news:
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?
>
>


Respuesta Responder a este mensaje
#3 Maxi
07/09/2005 - 21:12 | Informe spam
Hola, si la subsonculta da siempre lo mismo el motor es mas inteligente que
nosotros :-), probalo vas a ver lo que te indico ;-)


Maxi - Buenos Aires - Argentina
Desarrollador 3 Estrellas

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

"Manuel Vera" escribió en el mensaje
news:eQB$
Yo imaginaba que la sub_consulta se ejecutaría por cada registro.
Según lo que dices y yo entiendo, el motor al detectar que el resultado es
siempre el mismo optimiza el plan para una ejecución única.
Revisaré como dices a ver que sale.
Yo pedía otra manera de hacerlo pues hay varias tablas involucradas (2).
Gracias.
Manuel

"Maxi" wrote in message
news:
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?
>
>






Respuesta Responder a este mensaje
#4 Harold Crow
08/09/2005 - 05:39 | Informe spam
yo no creo que el motor sea mas inteligente que nosotros... pues un humano
lo creo
mas bien.. el motor se conoce mejor el mismo que nosotros a el :-D

"Maxi" escribió en el mensaje
news:%23FaVuA%
Hola, si la subsonculta da siempre lo mismo el motor es mas inteligente
que nosotros :-), probalo vas a ver lo que te indico ;-)


Maxi - Buenos Aires - Argentina
Desarrollador 3 Estrellas

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

"Manuel Vera" escribió en el mensaje
news:eQB$
Yo imaginaba que la sub_consulta se ejecutaría por cada registro.
Según lo que dices y yo entiendo, el motor al detectar que el resultado
es
siempre el mismo optimiza el plan para una ejecución única.
Revisaré como dices a ver que sale.
Yo pedía otra manera de hacerlo pues hay varias tablas involucradas (2).
Gracias.
Manuel

"Maxi" wrote in message
news:
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?
>
>










email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida