Foros del Web » Programando para Internet » ASP Clásico »

Calcular y ordenar

Estas en el tema de Calcular y ordenar en el foro de ASP Clásico en Foros del Web. Hola,llevo unos dias dándole vueltas a esta idea pero no he encontrado nada en el foro parecido. Tengo una base de datos access en donde ...
  #1 (permalink)  
Antiguo 20/06/2004, 09:04
 
Fecha de Ingreso: septiembre-2003
Mensajes: 24
Antigüedad: 21 años, 7 meses
Puntos: 0
Calcular y ordenar

Hola,llevo unos dias dándole vueltas a esta idea pero no he encontrado nada en el foro parecido.
Tengo una base de datos access en donde tengo una tabla q tiene nombre de corredor y resultado obtenido.
Algo así:
Pepe Perez - 1
Pepe Perez - 2
Pepe Perez - 5
Pepe Perez - 1
Jose Juan - 2
Jose Juan - 2
Jose Juan - 3
Jose Juan - 3

Bueno pues lo q quiero es q me coga esos resultados y me haga una media de ellos de cada corredor y después me ordene los registros en función de esa media.

un saludo y gracias por todo
  #2 (permalink)  
Antiguo 20/06/2004, 10:05
Avatar de Miguel Delgado  
Fecha de Ingreso: marzo-2004
Ubicación: Barranquilla
Mensajes: 130
Antigüedad: 21 años, 2 meses
Puntos: 0
Sacalas por consultas SQL.
__________________
Fox Mulder

El destino es el que baraja las cartas, pero nosotros somos los que jugamos. :pensando: :pensando:
  #3 (permalink)  
Antiguo 20/06/2004, 10:23
 
Fecha de Ingreso: septiembre-2003
Mensajes: 24
Antigüedad: 21 años, 7 meses
Puntos: 0
Si,eso ya lo se,el problema es q no se como hacerlas,ya q tengo q hacer 2 SQLs,una para hallar la media y la otra para ordenar cada uno de los corredores con su valor obtenido en la anterior secuencia de SQL,es decir ordenar las variables anteriormente conseguidas.

Tal vez es más sencillo q eso,pero me tiene sin dormir
  #4 (permalink)  
Antiguo 21/06/2004, 22:09
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
intentá así:


Código:
SELECT corredores, Avg(resultado) AS PromedioDeresultado FROM Tabla GROUP BY corredores ORDER BY Avg(resultado)
  #5 (permalink)  
Antiguo 22/06/2004, 07:09
 
Fecha de Ingreso: septiembre-2003
Mensajes: 24
Antigüedad: 21 años, 7 meses
Puntos: 0
Muchas gracias dazuaga,

la duda que me surge ahora es si tengo lo siguiente:

Pepe Perez - 1
Pepe Perez - 2
Pepe Perez - No salió
Pepe Perez - Retirado
Pepe Perez - 5

Teniendo en cuenta que por lo tanto la columna de resultados es de tipo texto y no numérica ,y que las causas por las que no acabó la carrera pueden ser más de las que puse en el ejemplo,¿cómo sacaríamos una media al estilo (veces que terminó/veces que salió)?...en este caso sería 3/5

Gracias por todo
  #6 (permalink)  
Antiguo 22/06/2004, 10:34
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
No entiendo del todo (siempre basándonos en los datos de tu último mensaje)

- Querés obtener una nueva estadística en base a esos datos?... por ejemplo:

Cita:
Pepe Perez ha finalizado un 60% del total de carreras disputadas
- Querés, al igual que antes, sacar un promedio de su puntaje:

Cita:
El promedio de Pepe Perez es de 1,6 puntos
Otra cosa que no me queda clara es si "1" es el valor más alto o es el más bajo (o sea... 1 es sólo un punto entre X posibles -aquí 1 es el más bajo- o 1 es la posición -aquí 1 es el más alto-)

Como sea, yo replantearía la estructura de la tabla... algo así:

CORREDOR - PUNTOS - COMENTARIO
Pepe Perez - 1 - Null
Pepe Perez - 2 - Null
Pepe Perez - Aquí algún valor numérico o vacío - No salió
Pepe Perez - Aquí algún valor numérico o vacío - Retirado
Pepe Perez - 5 - Null
  #7 (permalink)  
Antiguo 22/06/2004, 15:17
 
Fecha de Ingreso: septiembre-2003
Mensajes: 24
Antigüedad: 21 años, 7 meses
Puntos: 0
Si,lo que quiero es obtener una estadística nueva,y claro en mi tabla no quedó claro q 1 significaba 1º de la carrera con lo que 1 es el valor más alto.
El hecho de cambiar la tabla a día de hoy como me indicas me resultaría muy laborioso ,tengo más de 15.000 registros e ir uno por uno me llevaría una vida.

Lo que busco es algo así,

(Count(Corredor)-Abandonos) / Count(Corredor)

lo que no se es como meter esa sentencia dentro del SELECT,además el dato 'Abandonos' es texto ya que sería la suma de "no salió" y "retirado" y habría que usar el CInt para pasarlo a numérico.

Gracias por tu ayuda
  #8 (permalink)  
Antiguo 24/06/2004, 14:35
 
Fecha de Ingreso: septiembre-2003
Mensajes: 24
Antigüedad: 21 años, 7 meses
Puntos: 0
¿Alguien sabe como solucionar el problema?
  #9 (permalink)  
Antiguo 24/06/2004, 16:19
Avatar de LeCLUB  
Fecha de Ingreso: abril-2003
Ubicación: Barcelona (España)
Mensajes: 205
Antigüedad: 22 años
Puntos: 1
Bueno, vamos a ver, yo no se si es esto lo que buscas, pero el siguiente código muestra:

* El total de apuestas realizadas
* El total de apuestas que ha terminado
* El total de apuestas a las que se ha retirado
* La media ponderada siendo esta PUNTOS_TOTALES/APUESTAS TOTALES (se puede modificar)

Suponiendo que en la tabla tengas estos datos (los dos campos son de tipo TEXTO)

CORREDOR(texto) - PUNTOS(texto)
============================
Pepe - 1
Pepe - Retirado
Pepe - 2
Pepe - 5

El resultado del código que te pongo debajo mostraría este resultado:

El jugador Pepe ha realizado un total de 4 apuestas

Ha terminado un total de 3 y se ha retirado de 1 apuestas

Tiene un total de 8 puntos

Su media ponderada es de 2 puntos


Aquí tienes el código:

Código PHP:
<%
corredor "Pepe"
 
Conexion "Driver={Microsoft Access Driver (*.mdb)};DBQ=" Server.MapPath(".\db.mdb")
Set Conn Server.CreateObject("ADODB.Connection")
set Rs CreateObject("ADODB.Recordset")
Conn.open Conexion
SQL 
"Select * from Tabla1 where corredor='" corredor "'"
Rs.open SQLConn1,3
 
contador 
Rs.RecordCount
 
if NOT Rs.EOF then
 
Puntos 
0
terminado 
0
retirado 
0

While NOT Rs.EOF
 
If Isnumeric(Rs("puntos")) Then
puntos 
Puntos Rs("puntos")
terminado terminado 1
else
retirado retirado 1
End 
if

Rs.MoveNext()
Wend

Response
.write "El jugador <b> " corredor " </b> ha realizado un total de <b> " contador " </b> apuestas <br><br>"
Response.write "Ha terminado un total de <b> " terminado " </b> y se ha retirado de <b> " retirado " </b> apuestas <br><br>"
Response.write "Tiene un total de <b> " puntos " </b> puntos <br><br>"
Response.write "Su media ponderada es de <b> " puntos/contador " </b> puntos <br>"

End if
 
Rs.close
Conn
.close
set Rs 
Nothing
set Conn 
Nothing
%> 

Por otro lado, comentarte tres cosas:

1. Cambia el nombre de tu BBDD
2. En la variable corredor = "Pepe" utiliza Request.QueryString("campo") donde "campo" es el nombre del INPUT del Formulario que le envía los datos
3. Si tienes muchos registros, lo mejor será utilizar GetRows(), o saturarás mucho el servidor, pero eso lo haces tú, que sino no tiene gracia ;)

Espero que te sirva

Un saludo
__________________
Documentación de VBScript V5.6 en Español:
http://download.microsoft.com/downlo...ES/scd56es.exe
  #10 (permalink)  
Antiguo 25/06/2004, 07:09
 
Fecha de Ingreso: septiembre-2003
Mensajes: 24
Antigüedad: 21 años, 7 meses
Puntos: 0
Excelente LeClub!!!!!!! :)...probaré el codigo q me pasaste a ver si me va.
un saludo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:16.