• Domingo 5 de Mayo de 2024, 06:56

Autor Tema:  Que Registro Es??  (Leído 4172 veces)

Cajami

  • Miembro MUY activo
  • ***
  • Mensajes: 298
    • Ver Perfil
Que Registro Es??
« en: Martes 20 de Febrero de 2007, 14:38 »
0
hola que tal, tengo una tabla que registra las notas de los alumnos, ahora una vez acabado un bimestre se necesita saber:

1. Que niño tiene la nota mas alta.
2. La nota promedio de todos los alumnos.

Se que para el 1 se utiliza la funcion MAX:

SELECT MAX(Notas) FROM Alumnos

segun lo he probado si te devuelve el registro mayor pero no se que registro es como hago para saber que registro dio o saber los demas campos de ese registro devuelto.

En el 2 no se si usará la funcion SUM, pero se que sumaría todas las notas pero como hago para dividirlas por el total de alumnos??, gracias :hola:
Lima - Perú

-------------------------------------------------------------------------------------------------------
"Persigue tus metas, tus objetivos, tus sueños, nunca t rindas si t caes 1000 veces levantat 1000 veces y sigue adelante..."

lencho

  • Miembro de PLATA
  • *****
  • Mensajes: 1076
    • Ver Perfil
Re: Que Registro Es??
« Respuesta #1 en: Martes 20 de Febrero de 2007, 15:01 »
0
para sacar el promedio usa AVG
Código: Text
  1.  select AVG(Nota)  from Alumno
  2.  

BYTE.
______________________________________________________________________________________
"No estoy de acuerdo con lo que dices, pero defenderé con mi vida tu derecho a expresarlo"

Cajami

  • Miembro MUY activo
  • ***
  • Mensajes: 298
    • Ver Perfil
Re: Que Registro Es??
« Respuesta #2 en: Martes 20 de Febrero de 2007, 15:02 »
0
hola, no se mucho sobre SQL podrias explicarte mejor. gracias
Lima - Perú

-------------------------------------------------------------------------------------------------------
"Persigue tus metas, tus objetivos, tus sueños, nunca t rindas si t caes 1000 veces levantat 1000 veces y sigue adelante..."

lencho

  • Miembro de PLATA
  • *****
  • Mensajes: 1076
    • Ver Perfil
Re: Que Registro Es??
« Respuesta #3 en: Martes 20 de Febrero de 2007, 15:06 »
0
Cita de: "Cajami"
hola, no se mucho sobre SQL podrias explicarte mejor. gracias
No hay mucho que explicar. La funcion AVG lo que hace es calcular el promedio de la columna que le das (en tu caso seria NOTAS) y listo, solo te devuelve un valor.

Funcion: AVG(col)
Calcula el valor medio de todos los valores de la columna col.
Ejemplo: select avg(salario),oficio from emp GROUP BY oficio;

BYTE.
______________________________________________________________________________________
"No estoy de acuerdo con lo que dices, pero defenderé con mi vida tu derecho a expresarlo"

Cajami

  • Miembro MUY activo
  • ***
  • Mensajes: 298
    • Ver Perfil
Re: Que Registro Es??
« Respuesta #4 en: Martes 20 de Febrero de 2007, 15:08 »
0
y en el caso de la funcion MAX que lo he probado en el Query del Sql y me devuelve la nota mayor pero no me devuelve mas como se que registro es, o como averiguar sus campos de ese registro devuelvo'
Lima - Perú

-------------------------------------------------------------------------------------------------------
"Persigue tus metas, tus objetivos, tus sueños, nunca t rindas si t caes 1000 veces levantat 1000 veces y sigue adelante..."

lencho

  • Miembro de PLATA
  • *****
  • Mensajes: 1076
    • Ver Perfil
Re: Que Registro Es??
« Respuesta #5 en: Martes 20 de Febrero de 2007, 15:12 »
0
Cita de: "Cajami"
y en el caso de la funcion MAX que lo he probado en el Query del Sql y me devuelve la nota mayor pero no me devuelve mas como se que registro es, o como averiguar sus campos de ese registro devuelvo'
select Max(Notas) as NotaMaxima, Nombre as Alumnos
GROUP BY Nombre.

BYTE.
______________________________________________________________________________________
"No estoy de acuerdo con lo que dices, pero defenderé con mi vida tu derecho a expresarlo"

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Que Registro Es??
« Respuesta #6 en: Martes 20 de Febrero de 2007, 15:13 »
0
Para sacar el promedio directamente utiliza AVG en vez de SUM y COUNT
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.

Cajami

  • Miembro MUY activo
  • ***
  • Mensajes: 298
    • Ver Perfil
Re: Que Registro Es??
« Respuesta #7 en: Martes 20 de Febrero de 2007, 15:15 »
0
que quieres decir con As NotaMaxima?
Lima - Perú

-------------------------------------------------------------------------------------------------------
"Persigue tus metas, tus objetivos, tus sueños, nunca t rindas si t caes 1000 veces levantat 1000 veces y sigue adelante..."

lencho

  • Miembro de PLATA
  • *****
  • Mensajes: 1076
    • Ver Perfil
Re: Que Registro Es??
« Respuesta #8 en: Martes 20 de Febrero de 2007, 15:15 »
0
Cita de: "lencho"
Cita de: "Cajami"
y en el caso de la funcion MAX que lo he probado en el Query del Sql y me devuelve la nota mayor pero no me devuelve mas como se que registro es, o como averiguar sus campos de ese registro devuelvo'
select Max(Notas) as NotaMaxima, Nombre as Alumnos
GROUP BY Nombre.

BYTE.
ummmmm, creo que esto no da.

aqui te mando otra opcion para la maxima nota

Código: Text
  1.  
  2. Select top 1 * from ALUMNOS
  3. order by Nota desc
  4.  
  5.  

BYTE.
______________________________________________________________________________________
"No estoy de acuerdo con lo que dices, pero defenderé con mi vida tu derecho a expresarlo"

lencho

  • Miembro de PLATA
  • *****
  • Mensajes: 1076
    • Ver Perfil
Re: Que Registro Es??
« Respuesta #9 en: Martes 20 de Febrero de 2007, 15:17 »
0
Cita de: "Cajami"
que quieres decir con As NotaMaxima?
es un alias que le estoy poniendo, puedes obviarlo y no ponerlo as NotaMaxima

BYTE.
______________________________________________________________________________________
"No estoy de acuerdo con lo que dices, pero defenderé con mi vida tu derecho a expresarlo"

Cajami

  • Miembro MUY activo
  • ***
  • Mensajes: 298
    • Ver Perfil
Re: Que Registro Es??
« Respuesta #10 en: Martes 20 de Febrero de 2007, 15:17 »
0
como dije en el primer post con este select:

SELECT MAX (Notas) FROM Alumnos

si me devuelve la nota mas pero naa mas osea no se que alumno tiene esa nota
Lima - Perú

-------------------------------------------------------------------------------------------------------
"Persigue tus metas, tus objetivos, tus sueños, nunca t rindas si t caes 1000 veces levantat 1000 veces y sigue adelante..."

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Que Registro Es??
« Respuesta #11 en: Martes 20 de Febrero de 2007, 15:20 »
0
Cita de: "lencho"
Cita de: "Cajami"
y en el caso de la funcion MAX que lo he probado en el Query del Sql y me devuelve la nota mayor pero no me devuelve mas como se que registro es, o como averiguar sus campos de ese registro devuelvo'
select Max(Notas) as NotaMaxima, Nombre as Alumnos
GROUP BY Nombre.

BYTE.
y el FROM ? :P

[dohtml]<hr>[/dohtml]

Citar
   como dije en el primer post con este select:

SELECT MAX (Notas) FROM Alumnos

si me devuelve la nota mas pero naa mas osea no se que alumno tiene esa nota
Con el método que te dice lencho la consulta te va a devolver todos los campos !!
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.

lencho

  • Miembro de PLATA
  • *****
  • Mensajes: 1076
    • Ver Perfil
Re: Que Registro Es??
« Respuesta #12 en: Martes 20 de Febrero de 2007, 15:23 »
0
Cita de: "Cajami"
como dije en el primer post con este select:

SELECT MAX (Notas) FROM Alumnos

si me devuelve la nota mas pero naa mas osea no se que alumno tiene esa nota
aqui hay un link que te puede ayudar
http://www.plus2net.com/sql_tutorial/sql_max.php

Código: Text
  1. Select top 1 * from ALUMNOS
  2. order by Nota desc
  3.  
Esta consulta te devolvera al alumno(con todos sus datos)   que tenga la mejor nota (ojo, esta consulta esta hecha sin usar la clausula MAX)
Usando la clausula MAX seria asi.
Código: Text
  1.  select Max(Notas), Nombre as Alumnos
  2. GROUP BY Nombre.
  3.  
pero creo que esta no funciona.

Supongo la clausula AVG quedo clara no ?

BYTE.
______________________________________________________________________________________
"No estoy de acuerdo con lo que dices, pero defenderé con mi vida tu derecho a expresarlo"

lencho

  • Miembro de PLATA
  • *****
  • Mensajes: 1076
    • Ver Perfil
Re: Que Registro Es??
« Respuesta #13 en: Martes 20 de Febrero de 2007, 15:24 »
0
Cita de: "Angel_K_ido"
Cita de: "lencho"
Cita de: "Cajami"
y en el caso de la funcion MAX que lo he probado en el Query del Sql y me devuelve la nota mayor pero no me devuelve mas como se que registro es, o como averiguar sus campos de ese registro devuelvo'
select Max(Notas) as NotaMaxima, Nombre as Alumnos
GROUP BY Nombre.

BYTE.
y el FROM ? :P
cierto, se me olvido ponerle el from Alumno

Gracias.


BYTE.
______________________________________________________________________________________
"No estoy de acuerdo con lo que dices, pero defenderé con mi vida tu derecho a expresarlo"

Cajami

  • Miembro MUY activo
  • ***
  • Mensajes: 298
    • Ver Perfil
Re: Que Registro Es??
« Respuesta #14 en: Martes 20 de Febrero de 2007, 15:29 »
0
tal vez no lo estoy razonando bien pero este codigo:

Código: Text
  1. Select top 1 * from ALUMNOS
  2. order by Nota desc
  3.  

te devuelve un registro claro eso si, y Notas lo devuelve en orden descendente y cojeria supuestamente el ultimo registro, pero el ultimo registro puede que no tenga la notas mas alta, o estoy en un error  :unsure:
Lima - Perú

-------------------------------------------------------------------------------------------------------
"Persigue tus metas, tus objetivos, tus sueños, nunca t rindas si t caes 1000 veces levantat 1000 veces y sigue adelante..."

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Que Registro Es??
« Respuesta #15 en: Martes 20 de Febrero de 2007, 15:31 »
0
Cita de: "Cajami"
tal vez no lo estoy razonando bien pero este codigo:

Código: Text
  1. Select top 1 * from ALUMNOS
  2. order by Nota desc
  3.  

te devuelve un registro claro eso si, y Notas lo devuelve en orden descendente y cojeria supuestamente el ultimo registro, pero el ultimo registro puede que no tenga la notas mas alta, o estoy en un error  :unsure:
Si, estás en un error. Puesto que la cláusula order by Nota desc Va a ordenar el resultado de la consulta de mayor a menor y gracias a top 1, el resultado va a ser el primer registro (El registro con la nota mayor)

Saludos  :hola:
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.

lencho

  • Miembro de PLATA
  • *****
  • Mensajes: 1076
    • Ver Perfil
Re: Que Registro Es??
« Respuesta #16 en: Martes 20 de Febrero de 2007, 15:31 »
0
Cita de: "Cajami"
tal vez no lo estoy razonando bien pero este codigo:

Código: Text
  1. Select top 1 * from ALUMNOS
  2. order by Nota desc
  3.  

te devuelve un registro claro eso si, y Notas lo devuelve en orden descendente y cojeria supuestamente el ultimo registro, pero el ultimo registro puede que no tenga la notas mas alta, o estoy en un error  :unsure:
primero que nada.
La consulta te devuelve todos los registros
despuej te lo ordenaria por el campo NOTA de mayor a menor, osea que el primer registro sera del mejor alumno, y el peor alumno sera el ultimo registro.
y por ultimo con el top 1 solo escogerias el primer registro, osea el mejor alumno.

BYTE.
______________________________________________________________________________________
"No estoy de acuerdo con lo que dices, pero defenderé con mi vida tu derecho a expresarlo"

Cajami

  • Miembro MUY activo
  • ***
  • Mensajes: 298
    • Ver Perfil
Re: Que Registro Es??
« Respuesta #17 en: Martes 20 de Febrero de 2007, 15:37 »
0
que pasaría si tuviera 3 alumnos con la misma nota se tedria que mostrar a los 3 alumnos ordenados por sus apellidos, disculpen si ia caigo odioso preguntando pero hasta que no lo comprenda bien  :D me gusta seguir preguntando
Lima - Perú

-------------------------------------------------------------------------------------------------------
"Persigue tus metas, tus objetivos, tus sueños, nunca t rindas si t caes 1000 veces levantat 1000 veces y sigue adelante..."

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Que Registro Es??
« Respuesta #18 en: Martes 20 de Febrero de 2007, 15:43 »
0
<!--sql--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>SQL </td></tr><tr><td id='CODE'><!--sql1-->[color=blue;font-weight]Select[/color] top 1 * from ALUMNOS order by Nota desc, apellidos <!--sql2--></td></tr></table><div class='postcolor'><!--sql3-->
El pasado son solo recuerdos, el futuro son solo sueños

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Que Registro Es??
« Respuesta #19 en: Martes 20 de Febrero de 2007, 15:44 »
0
Cita de: "Cajami"
que pasaría si tuviera 3 alumnos con la misma nota se tedria que mostrar a los 3 alumnos ordenados por sus apellidos, disculpen si ia caigo odioso preguntando pero hasta que no lo comprenda bien  :D me gusta seguir preguntando
Entonces así:
Código: Text
  1. SELECT * FROM Alumnos WHERE Nota IN (Select max(Nota) From Alumnos);
  2.  
No te hagas problemas en preguntar, mientras quieras aprender  :comp: .-
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.

lencho

  • Miembro de PLATA
  • *****
  • Mensajes: 1076
    • Ver Perfil
Re: Que Registro Es??
« Respuesta #20 en: Martes 20 de Febrero de 2007, 15:45 »
0
Cita de: "Cajami"
que pasaría si tuviera 3 alumnos con la misma nota se tedria que mostrar a los 3 alumnos ordenados por sus apellidos, disculpen si ia caigo odioso preguntando pero hasta que no lo comprenda bien  :D me gusta seguir preguntando
creo que se le aumenta a la clausula top percent

lo busco y lo muestro.

BYTE.
______________________________________________________________________________________
"No estoy de acuerdo con lo que dices, pero defenderé con mi vida tu derecho a expresarlo"

Cajami

  • Miembro MUY activo
  • ***
  • Mensajes: 298
    • Ver Perfil
Re: Que Registro Es??
« Respuesta #21 en: Martes 20 de Febrero de 2007, 15:46 »
0
claro, pero como pregunté antes si tuviera (en el caso que tuviera puede que no) 3 alumnos que tengan 16 de nota los 3, pero como dije se puede dar como no el caso de que dos o mas alumnos tengan la misma nota
Lima - Perú

-------------------------------------------------------------------------------------------------------
"Persigue tus metas, tus objetivos, tus sueños, nunca t rindas si t caes 1000 veces levantat 1000 veces y sigue adelante..."

lencho

  • Miembro de PLATA
  • *****
  • Mensajes: 1076
    • Ver Perfil
Re: Que Registro Es??
« Respuesta #22 en: Martes 20 de Febrero de 2007, 15:47 »
0
Cita de: "Angel_K_ido"
Cita de: "Cajami"
que pasaría si tuviera 3 alumnos con la misma nota se tedria que mostrar a los 3 alumnos ordenados por sus apellidos, disculpen si ia caigo odioso preguntando pero hasta que no lo comprenda bien  :D me gusta seguir preguntando
Entonces así:
Código: Text
  1. SELECT * FROM Alumnos WHERE Nota IN (Select max(Nota) From Alumnos);
  2.  
No te hagas problemas en preguntar, mientras quieras aprender  :comp: .-
SIP, efectivamente creo que esta es la mejor opcion.

Ya que con eso de la clausula percent hay algunos problemas.

Aqui hay parte de un articulo que lo explica.

Código: Text
  1. Indicar el número máximo de filas a devolver (TOP) (02/May/04)
  2.  
  3. Al realizar una selección de datos clasificados (usando ORDER BY), podemos indicar el número de filas (registros) máximos que queremos devolver, para ello indicaremos TOP y el número de filas o el porcentaje de filas a devolver:
  4.  
  5. Con las siguientes instrucciones se devolverán los primeros 50 registros (si los hay) que cumplan las condiciones indicadas:
  6.  
  7. SELECT TOP 50 Nombre, Apellidos, NIF FROM Clientes WHERE Provincia = 'Madrid' ORDER BY Apellidos DESC
  8.  
  9. TOP no diferencia filas que sean iguales, es decir, si la fila 50 y la 51 tienen los mismos Apellidos, devolverá 51.
  10.  
  11. En este otro ejemplo, se devolverá el 20% de las filas que coincidan con las instrucciones SQL indicadas:
  12.  
  13. SELECT TOP 20 PERCENT Nombre, Apellidos, NIF FROM Clientes WHERE Provincia = 'Madrid' ORDER BY Apellidos DESC
  14.  
  15.     Nota:
  16.     Dependiendo de que estemos usando DAO o ADO el número de filas devueltas puede que sea distinto de cuando usamos ADO.NET, al menos en una misma tabla, usando TOP 150, con ADO me devolvía 151 filas y con ADO.NET me devolvía 150.
  17.     No se si es que TOP se comporta de forma diferente en ADO.NET
  18.  
  19. .
  20.  

BYTE.
______________________________________________________________________________________
"No estoy de acuerdo con lo que dices, pero defenderé con mi vida tu derecho a expresarlo"

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Que Registro Es??
« Respuesta #23 en: Martes 20 de Febrero de 2007, 15:50 »
0
Cita de: "Cajami"
claro, pero como pregunté antes si tuviera (en el caso que tuviera puede que no) 3 alumnos que tengan 16 de nota los 3, pero como dije se puede dar como no el caso de que dos o mas alumnos tengan la misma nota
Citar
Entonces así:
SELECT * FROM Alumnos WHERE Nota IN (Select max(Nota) From Alumnos);
No te hagas problemas en preguntar, mientras quieras aprender.-
:blink:
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.

Cajami

  • Miembro MUY activo
  • ***
  • Mensajes: 298
    • Ver Perfil
Re: Que Registro Es??
« Respuesta #24 en: Martes 20 de Febrero de 2007, 15:55 »
0
muchas gracias a todos por sus respuetas  :hola:
Lima - Perú

-------------------------------------------------------------------------------------------------------
"Persigue tus metas, tus objetivos, tus sueños, nunca t rindas si t caes 1000 veces levantat 1000 veces y sigue adelante..."