Por ejemplo:¿Cómo puedo encontrar el valor más grande en una columna en postgres sql?
name | weight
jon 100
jane 120
joe 130
¿Cómo devolver sólo el nombre de la persona con el mayor peso?
Por ejemplo:¿Cómo puedo encontrar el valor más grande en una columna en postgres sql?
name | weight
jon 100
jane 120
joe 130
¿Cómo devolver sólo el nombre de la persona con el mayor peso?
Utilice esta:
select name
from tbl
where weight = (select max(weight) from tbl)
SELECT name FROM tbl ORDER BY weight DESC LIMIT 1
Mucho más performante que la otra respuesta y los resultados en una sola fila.
Buena respuesta. También quiero señalar que si el peso tiene un índice, la ordenación se realizará en el índice y será más rápida. – bmlkc
Buena respuesta, pero no devolverá dos resultados si dos personas tienen el mismo peso. – Stanislasdrg
LÍMITE 1 requiere un escaneo completo de la tabla. Esto no es perfecto con muchas filas. Intenta ejecutar 'EXPLAIN' en tus consultas. – Volte
ORDER BY DESC pone filas con valores nulos en la parte superior.
para evitar volver resultados correspondientes a los valores nulos :
SELECT name FROM tbl WHERE weight = (SELECT MAX(weight) FROM tbl);
Nota: Esta consulta devolverá múltiples resultados si varias personas tienen un peso igual al peso máximo. Para obtener solo uno, agregue LIMIT 1
al final de la consulta.
Agradecimientos y más información:
Why do NULL values come first when ordering DESC in a PostgreSQL query?
wow, lo tonto de mi parte no pensar en utilizar una consulta anidada! ¡Gracias! –
Dependiendo del número de filas con valores de "peso" igual al valor máximo, esto puede devolver más de un nombre. Solo para tu información. –
¿Cómo se hace que devuelva solo una de las filas con el valor máximo (no importa cómo lo elija)? –