Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: glmalpica en 21 Noviembre 2019, 19:44 pm



Título: Seleccionar el valor mas alto de una columna y que muestre la información
Publicado por: glmalpica en 21 Noviembre 2019, 19:44 pm
Buenas Tardes
Tengo un problema

En una tabla de MySQL tengo 4 campos, ID, Nombre, Fecha, Calificacion,  en esta tabla se registran las calificaciones por día de N participantes, por lo que el "Nombre" aparece varias veces, necesito saber que día se obtuvo la calificación mas alta, para lo cual estoy usando la sentencia:  select Nombre, Fecha, MAX(Calificacion) as Calificacion from evento  where Nombre = 'Panchito' group by Nombre;

con esto obtengo, el Nombre correcto, la primera fecha que aparece en los registros, no la correcta y el valor máximo, ¿como puedo obtener la fecha en que se obtuvo el valor máximo?
Gracias



Título: Re: Seleccionar el valor mas alto de una columna y que muestre la información
Publicado por: engel lex en 21 Noviembre 2019, 19:51 pm
Código:
select Nombre, Fecha, MAX(Calificacion) as Calificacion from evento  where Nombre = 'Panchito' group by Nombre;


hay que tener cuidado con group by, no siempre ordena todo como se espera...

creo que con el MAX ya te lo limitaría a un solo resultado ya que hay solo un maximo...



en caso de darte mas de un resultado como solo te importa el primero, puedes usar LIMIT 1 de la siguiente manera

Código:
select Nombre, Fecha, MAX(Calificacion) as Calificacion from evento  where Nombre = 'Panchito' LIMIT 1;



Título: Re: Seleccionar el valor mas alto de una columna y que muestre la información
Publicado por: glmalpica en 21 Noviembre 2019, 22:29 pm
Gracias, sigo obteniendo el mismo resultado, el nombre es el correcto, la fecha no, me pone la primera que encuentra con ese nombre, el valor máximo es correcto, la tabla es la siguiente:

Nombre   Fecha   Calificacion
Panchito   04/04/2019   23.4
Panchito   07/04/2019   25.3
Panchito   22/04/2019   22.2
Panchito   04/05/2019   21
Panchito   12/05/2019   26.4
Panchito   04/06/2019   24.3
Panchito   16/06/2019   19.9
Panchito   22/06/2019   22.8
Panchito   09/07/2019   21.4
Panchito   18/07/2019   24.4
Panchito   15/08/2019   25.3
Panchito   28/08/2019   20.9
Panchito   05/09/2019   23.8
Panchito   04/10/2019   21.2
Panchito   12/11/2019   22.6
Panchito   14/11/2019   24.7


el resultado es el siguiente:

Nombre   Fecha   Calificacion
Panchito   04/04/2019   26.4


el resultado correcto debe ser:

 Nombre   Fecha   Calificacion
Panchito   12/05/2019   26.4

Gracias


Título: Re: Seleccionar el valor mas alto de una columna y que muestre la información
Publicado por: engel lex en 22 Noviembre 2019, 00:17 am
entonces puedes usar con order by


Código:
select Nombre, Fecha, Calificacion from evento  where Nombre = 'Panchito' ORDER BY Calificacion DESC LIMIT 1