RANKING con SQL

11/02/2004 - 16:31 por PA | Informe spam
Hola que tal?

mi problema es no saber como hacer con sql lo siguiente:
Yo registro en una tabla JUGDAS un IDJUGADOR y un PUNTAJE

lo que hago es lo siguiente.
primero que me tire los 10 primeros puestos... esto es sencillo.

select top 10 idjugador, sum (puntaje) as suma from jugadas
group by idjugador
order by suma desc

pero lo que nose como hacer es que luego de ese listado me tire la posicion
de otro jugador que por ejemplo esta nro 42.


en otras palabras el resultado que quisiera obtener es el sig.:
el jugador 11 participa del juego, obtiene 1 punto y al finalizar se le
muestra los primeros 10 puestos y el puesto de el que en este caso seria el
42

pos IDJUGADOR PUNTOS
1 1 100
2 2 90
3 3 80
4 4 70
5 5 60
6 6 50

7 7 40

8 8 30

9 9 20
10 10 10

42 11 1


yo lo que necesito es ese 42!!!!!!!!!!!!!
la primer parte la obtengo con la consulta arriba mensionada pero la
posicion del jugador 11 como la obtengo?

espero que me puedan ayudar...


saludos

Pablo

Preguntas similare

Leer las respuestas

#1 Maximiliano D. A.
11/02/2004 - 16:51 | Informe spam
hmmm y la posicion es un dato de la tabla o un orden? o sea el dato posicion
esta guardado? de ser asi con un UNION ALL lo solucionas.

Salu2

Maximiliano Damian Accotto


"PA" escribió en el mensaje
news:%
Hola que tal?

mi problema es no saber como hacer con sql lo siguiente:
Yo registro en una tabla JUGDAS un IDJUGADOR y un PUNTAJE

lo que hago es lo siguiente.
primero que me tire los 10 primeros puestos... esto es sencillo.

select top 10 idjugador, sum (puntaje) as suma from jugadas
group by idjugador
order by suma desc

pero lo que nose como hacer es que luego de ese listado me tire la


posicion
de otro jugador que por ejemplo esta nro 42.


en otras palabras el resultado que quisiera obtener es el sig.:
el jugador 11 participa del juego, obtiene 1 punto y al finalizar se le
muestra los primeros 10 puestos y el puesto de el que en este caso seria


el
42

pos IDJUGADOR PUNTOS
1 1 100
2 2 90
3 3 80
4 4 70
5 5 60
6 6 50

7 7 40

8 8 30

9 9 20
10 10 10

42 11 1


yo lo que necesito es ese 42!!!!!!!!!!!!!
la primer parte la obtengo con la consulta arriba mensionada pero la
posicion del jugador 11 como la obtengo?

espero que me puedan ayudar...


saludos

Pablo



Respuesta Responder a este mensaje
#2 PA
11/02/2004 - 16:59 | Informe spam
no, no esta almacenado en la tabla dado que se van actualizado

a cada rato se estan registrando jugadas por lo que varia el ranking...

"Maximiliano D. A." <maxi_accotto[arroba]speedy[.]com[.]ar> escribió en el
mensaje news:#
hmmm y la posicion es un dato de la tabla o un orden? o sea el dato


posicion
esta guardado? de ser asi con un UNION ALL lo solucionas.

Salu2

Maximiliano Damian Accotto


"PA" escribió en el mensaje
news:%
> Hola que tal?
>
> mi problema es no saber como hacer con sql lo siguiente:
> Yo registro en una tabla JUGDAS un IDJUGADOR y un PUNTAJE
>
> lo que hago es lo siguiente.
> primero que me tire los 10 primeros puestos... esto es sencillo.
>
> select top 10 idjugador, sum (puntaje) as suma from jugadas
> group by idjugador
> order by suma desc
>
> pero lo que nose como hacer es que luego de ese listado me tire la
posicion
> de otro jugador que por ejemplo esta nro 42.
>
>
> en otras palabras el resultado que quisiera obtener es el sig.:
> el jugador 11 participa del juego, obtiene 1 punto y al finalizar se le
> muestra los primeros 10 puestos y el puesto de el que en este caso seria
el
> 42
>
> pos IDJUGADOR PUNTOS
> 1 1 100
> 2 2 90
> 3 3 80
> 4 4 70
> 5 5 60
> 6 6 50
>
> 7 7 40
>
> 8 8 30
>
> 9 9 20
> 10 10 10
>
> 42 11 1
>
>
> yo lo que necesito es ese 42!!!!!!!!!!!!!
> la primer parte la obtengo con la consulta arriba mensionada pero la
> posicion del jugador 11 como la obtengo?
>
> espero que me puedan ayudar...
>
>
> saludos
>
> Pablo
>
>
>


Respuesta Responder a este mensaje
#3 Maximiliano D. A.
11/02/2004 - 17:06 | Informe spam
lo que me imagine, SqlServer no sabe la posicion de un registro asi como lo
buscas vos, por lo cual creo que deberias de resolver ese problema en la
aplicacion Cliente, si no hay que usar Cursores dentro de SqlServer cosa que
no recomiendo en lo absoluto.

En la aplicacion cliente como tenes ADO por ej podes saber la posicion de un
registro (en realidad es un cursor pero lo manejas en la aplicacion)

Salu2

Maximiliano Damian Accotto


"PA" escribió en el mensaje
news:eU%
no, no esta almacenado en la tabla dado que se van actualizado

a cada rato se estan registrando jugadas por lo que varia el ranking...

"Maximiliano D. A." <maxi_accotto[arroba]speedy[.]com[.]ar> escribió en el
mensaje news:#
> hmmm y la posicion es un dato de la tabla o un orden? o sea el dato
posicion
> esta guardado? de ser asi con un UNION ALL lo solucionas.
>
> Salu2
>
> Maximiliano Damian Accotto
>
>
> "PA" escribió en el mensaje
> news:%
> > Hola que tal?
> >
> > mi problema es no saber como hacer con sql lo siguiente:
> > Yo registro en una tabla JUGDAS un IDJUGADOR y un PUNTAJE
> >
> > lo que hago es lo siguiente.
> > primero que me tire los 10 primeros puestos... esto es sencillo.
> >
> > select top 10 idjugador, sum (puntaje) as suma from jugadas
> > group by idjugador
> > order by suma desc
> >
> > pero lo que nose como hacer es que luego de ese listado me tire la
> posicion
> > de otro jugador que por ejemplo esta nro 42.
> >
> >
> > en otras palabras el resultado que quisiera obtener es el sig.:
> > el jugador 11 participa del juego, obtiene 1 punto y al finalizar se


le
> > muestra los primeros 10 puestos y el puesto de el que en este caso


seria
> el
> > 42
> >
> > pos IDJUGADOR PUNTOS
> > 1 1 100
> > 2 2 90
> > 3 3 80
> > 4 4 70
> > 5 5 60
> > 6 6 50
> >
> > 7 7 40
> >
> > 8 8 30
> >
> > 9 9 20
> > 10 10 10
> >
> > 42 11 1
> >
> >
> > yo lo que necesito es ese 42!!!!!!!!!!!!!
> > la primer parte la obtengo con la consulta arriba mensionada pero la
> > posicion del jugador 11 como la obtengo?
> >
> > espero que me puedan ayudar...
> >
> >
> > saludos
> >
> > Pablo
> >
> >
> >
>
>


Respuesta Responder a este mensaje
#4 Norman A. Armas
11/02/2004 - 17:26 | Informe spam
Mas o menos asi

select
identity(int,1,1) as pos,idjugador,sum(puntaje) as puntos
into #t
from
jugdas
group by
idjugador
order by
sum(puntaje) desc

select * from #t where pos <= 10 or idjugadorB

drop table #t
Saludos,

Norman



"PA" wrote in message
news:%
Hola que tal?

mi problema es no saber como hacer con sql lo siguiente:
Yo registro en una tabla JUGDAS un IDJUGADOR y un PUNTAJE

lo que hago es lo siguiente.
primero que me tire los 10 primeros puestos... esto es sencillo.

select top 10 idjugador, sum (puntaje) as suma from jugadas
group by idjugador
order by suma desc

pero lo que nose como hacer es que luego de ese listado me tire la


posicion
de otro jugador que por ejemplo esta nro 42.


en otras palabras el resultado que quisiera obtener es el sig.:
el jugador 11 participa del juego, obtiene 1 punto y al finalizar se le
muestra los primeros 10 puestos y el puesto de el que en este caso seria


el
42

pos IDJUGADOR PUNTOS
1 1 100
2 2 90
3 3 80
4 4 70
5 5 60
6 6 50

7 7 40

8 8 30

9 9 20
10 10 10

42 11 1


yo lo que necesito es ese 42!!!!!!!!!!!!!
la primer parte la obtengo con la consulta arriba mensionada pero la
posicion del jugador 11 como la obtengo?

espero que me puedan ayudar...


saludos

Pablo



Respuesta Responder a este mensaje
#5 PA
11/02/2004 - 17:50 | Informe spam
el tema es que de esta manera me devolveria la cantidad de fijas hasta el
jugador... osea
si el jugador esta en la posicion nro 400 me devolveria 400 filas lo que
quiero es que me devuelva 20 y en la 21... me diga "vos estas en la posicion
400"!!!

resolvi el problema de la siguiente manera, lo unico es que no me
gusta mucho por lo que hice fue crear un SP y dentro del mismo un
cursor
lo que hago es enviarle por parametro el ID del jugador y me devuelve la
posicion..

nose si es la mas eficiente pero se me ocurrio aso por el momento.

Gracias!!!


"Norman A. Armas" escribió en el mensaje
news:#
Mas o menos asi

select
identity(int,1,1) as pos,idjugador,sum(puntaje) as puntos
into #t
from
jugdas
group by
idjugador
order by
sum(puntaje) desc

select * from #t where pos <= 10 or idjugadorB

drop table #t
> Saludos,

Norman



"PA" wrote in message
news:%
> Hola que tal?
>
> mi problema es no saber como hacer con sql lo siguiente:
> Yo registro en una tabla JUGDAS un IDJUGADOR y un PUNTAJE
>
> lo que hago es lo siguiente.
> primero que me tire los 10 primeros puestos... esto es sencillo.
>
> select top 10 idjugador, sum (puntaje) as suma from jugadas
> group by idjugador
> order by suma desc
>
> pero lo que nose como hacer es que luego de ese listado me tire la
posicion
> de otro jugador que por ejemplo esta nro 42.
>
>
> en otras palabras el resultado que quisiera obtener es el sig.:
> el jugador 11 participa del juego, obtiene 1 punto y al finalizar se le
> muestra los primeros 10 puestos y el puesto de el que en este caso seria
el
> 42
>
> pos IDJUGADOR PUNTOS
> 1 1 100
> 2 2 90
> 3 3 80
> 4 4 70
> 5 5 60
> 6 6 50
>
> 7 7 40
>
> 8 8 30
>
> 9 9 20
> 10 10 10
>
> 42 11 1
>
>
> yo lo que necesito es ese 42!!!!!!!!!!!!!
> la primer parte la obtengo con la consulta arriba mensionada pero la
> posicion del jugador 11 como la obtengo?
>
> espero que me puedan ayudar...
>
>
> saludos
>
> Pablo
>
>
>


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida