Problema:
Desea encontrar qué filas almacenan el valor numérico más grande en una columna determinada.
Ejemplo:
Nuestra base de datos tiene una tabla llamada student
con datos en las siguientes columnas:id
, first_name
, last_name
y grade
.
id | nombre | apellido | grado |
---|---|---|---|
1 | Lisa | Jackson | 3 |
2 | Gary | Larry | 5 |
3 | Tom | Michelín | 2 |
4 | Martín | Ladrador | 2 |
5 | Ellie | Negro | 5 |
6 | María | Simpson | 4 |
Busquemos a los estudiantes que tienen las calificaciones más altas.
Solución:
SELECT id, first_name, last_name, grade FROM student WHERE grade = (SELECT MAX(grade) FROM student);
Aquí está el resultado:
id | nombre | apellido | grado |
---|---|---|---|
2 | Gary | Larry | 5 |
5 | Ellie | Negro | 5 |
Discusión:
Para encontrar el valor máximo de una columna, use MAX()
función agregada; se necesita un nombre de columna o una expresión para encontrar el valor máximo. En nuestro ejemplo, la subconsulta devuelve el número más alto en la columna de calificación (subconsulta:SELECT MAX(grade) FROM student
). La consulta principal muestra id, nombre y apellido, y su calificación. Para mostrar solo las filas con el valor máximo entre todos los valores de la columna (por ejemplo, SELECT MAX(grade) FROM student
), use WHERE con una subconsulta. En WHERE, coloque el nombre de la columna con el valor comparable al valor devuelto por la función de agregado en la subconsulta (en nuestro ejemplo:WHERE grade = (SELECT MAX(grade) FROM student)
).