Condicionales

LEAST

Devuelve el menor de una lista de valores.

Sintaxis

LEAST(<valor1>, <valor2>, …)

Compara varios valores de una misma fila y devuelve el menor. Su contraparte es GREATEST, que devuelve el mayor. No la confundas con MIN: esa busca entre muchas filas, mientras que LEAST mira valores que están uno al lado del otro. Útil para poner un tope a un número: «como máximo».

Datos para los ejemplos

employees

namedepartmentsalarybonusphone
Emmabackend1200300+44 7700 900123
Liambackend1000NULLNULL
Oliviafrontend1350150+44 7700 900456
Noahfrontend950NULL+44 7700 900789
Sophiadesign1200200NULL

orders

idcreated_atamount
12026-07-03 10:15:00120.50
22026-07-28 18:40:0080.25
32026-08-09 09:05:00199.99
42026-08-21 14:30:0045.00
52026-09-02 11:00:0064.75

Estas tablas ya están creadas en el entorno de pruebas y los ejemplos de abajo las usan. ¿Quieres repetirlo en tu propia base de datos? Copia el SQL.

El menor de la lista
SELECT LEAST(3, 7, 5) AS smallest;
smallest
3
Un cupón cubre como máximo 100
SELECT id, amount,
LEAST(amount, 100) AS covered_by_coupon
FROM orders;
idamountcovered_by_coupon
1120.50100
280.2580.25
3199.99100
445.0045.00
564.7564.75
Un bonus de 200 como máximo — cuidado con NULL
SELECT name, bonus,
LEAST(bonus, 200) AS capped_bonus
FROM employees;
namebonuscapped_bonus
Emma300200
LiamNULL200
Olivia150150
NoahNULL200
Sophia200200

Liam y Noah no tenían bonus y ahora tienen 200: LEAST ignora NULL. Si un bonus ausente debe seguir ausente, compruébalo primero: CASE WHEN bonus IS NULL THEN NULL ELSE LEAST(bonus, 200) END.

Límites por ambos ladosAvanzado
SELECT id, amount,
LEAST(GREATEST(amount, 50), 150) AS clamped
FROM orders;
idamountclamped
1120.50120.50
280.2580.25
3199.99150
445.0050
564.7564.75

Primero GREATEST sube a 50 un importe demasiado pequeño y luego LEAST baja a 150 uno demasiado grande.

Ten en cuenta

PostgreSQL ignora NULL: LEAST(5, NULL) da 5, y solo cuando todos son NULL el resultado es NULL. En MySQL u Oracle, cualquier NULL daría NULL.

Los valores deben ser de tipos compatibles: LEAST(5, 'abc') da el error invalid input syntax for type integer.

El menor valor entre las filas de una tabla lo busca MIN. LEAST(salary) con un solo argumento simplemente devuelve el salary de cada fila.

Funciones relacionadas