Умовні

LEAST

Повертає найменше зі списку значень.

Синтаксис

LEAST(<значення1>, <значення2>, …)

Порівнює кілька значень в одному рядку й повертає найменше. Дзеркальна функція — GREATEST, вона повертає найбільше. Не плутай з MIN: той шукає серед багатьох рядків, а LEAST — серед значень поруч. Зручно, щоб обмежити число згори: «не більше ніж».

Дані для прикладів

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

Ці таблиці вже створено в пісочниці — приклади нижче працюють із ними. Хочеш повторити у своїй базі — скопіюй SQL.

Найменше зі списку
SELECT LEAST(3, 7, 5) AS smallest;
smallest
3
Купон покриває не більше 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
Бонус не більше 200 — обережно з NULL
SELECT name, bonus,
LEAST(bonus, 200) AS capped_bonus
FROM employees;
namebonuscapped_bonus
Emma300200
LiamNULL200
Olivia150150
NoahNULL200
Sophia200200

У Liam і Noah бонусу не було, а тепер він 200: LEAST пропускає NULL. Якщо відсутній бонус має лишитися відсутнім, спершу перевір його: CASE WHEN bonus IS NULL THEN NULL ELSE LEAST(bonus, 200) END.

Межі з обох боківСкладніше
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

Спершу GREATEST піднімає замалу суму до 50, потім LEAST опускає завелику до 150.

Зверни увагу

NULL PostgreSQL пропускає: LEAST(5, NULL) дає 5, і лише коли NULL усі — результат NULL. У MySQL чи Oracle будь-який NULL дав би NULL.

Значення мають бути сумісних типів: LEAST(5, 'abc') дасть помилку invalid input syntax for type integer.

Найменше серед рядків таблиці шукає MIN. LEAST(salary) з одним аргументом просто поверне salary кожного рядка.

Схожі функції