Seleccionar el valor mas alto de una columna y que muestre la información

Iniciado por glmalpica, 21 Noviembre 2019, 19:44 PM

0 Miembros y 1 Visitante están viendo este tema.

glmalpica

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


engel lex

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

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

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

glmalpica

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

engel lex

entonces puedes usar con order by


select Nombre, Fecha, Calificacion from evento  where Nombre = 'Panchito' ORDER BY Calificacion DESC LIMIT 1
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.