SmartQuery /ВОПРОС → ПРИМЕР → ПОНЯТНЫЙ ОТВЕТ
Базы данных

LEAST в PostgreSQL: минимум из значений и NULL

LEAST выбирает наименьшее из переданных значений. В PostgreSQL значения NULL пропускаются; результат будет NULL только тогда, когда все аргументы равны NULL.

Проверяемые примеры

SELECT LEAST(5, 10);          -- 5
SELECT LEAST(10, NULL, 5);    -- 5
SELECT LEAST(NULL, NULL);     -- NULL

Во втором случае результат 5. Утверждение, что любой аргумент NULL обязательно делает результат NULL, для PostgreSQL неверно.

Согласуйте типы

Аргументы должны приводиться к общему типу. Для строк результат зависит от правил сравнения и сортировки. Не смешивайте числовые значения с произвольными строками, надеясь на одинаковое поведение всех СУБД.

LEAST или MIN?

-- Меньшее из двух полей каждой строки
SELECT LEAST(price, limit_price) FROM offers;

-- Минимум по всем строкам
SELECT MIN(price) FROM offers;

Первый запрос возвращает значение для каждой исходной строки. Второй агрегирует строки. Примеры предполагают существование таблицы offers с соответствующими числовыми полями.

Документация