Опубликован стандарт SQL:2023
От: BlackEric http://black-eric.lj.ru
Дата: 04.06.23 14:11
Оценка: 18 (3) +1
Опубликован стандарт SQL:2023

Добавлены новые функции GREATEST и LEAST, выбирающие наибольшее и наименьшее значение из переданного списка. Например:


SELECT greatest(1, 2, 3);  --> 3
   SELECT least(1, 2, 3);     --> 1
   SELECT least(standard, discount) FROM data ...


Собственно вопрос: в чем смысл функций GREATEST и LEAST. Они же практически дублируют MAX() и MIN()?
https://github.com/BlackEric001
Re: Опубликован стандарт SQL:2023
От: vmpire Россия  
Дата: 04.06.23 14:29
Оценка:
Здравствуйте, BlackEric, Вы писали:

BE>

Добавлены новые функции GREATEST и LEAST, выбирающие наибольшее и наименьшее значение из переданного списка. Например:


BE>
BE>SELECT greatest(1, 2, 3);  --> 3
BE>   SELECT least(1, 2, 3);     --> 1
BE>   SELECT least(standard, discount) FROM data ...
BE>


BE>Собственно вопрос: в чем смысл функций GREATEST и LEAST. Они же практически дублируют MAX() и MIN()?

MAX и MIN работают по строкам, а GREATEST и LEAST — по столбцам.
Понятно, что можно перевести одно в другое, но это зачастую сильно усложнеяет и замедляет запрос.
Заменой GREATEST и LEAST мог бы служить CASE, но при большом количестве аргументов он будет ну очень громоздким.
Re[2]: Опубликован стандарт SQL:2023
От: BlackEric http://black-eric.lj.ru
Дата: 04.06.23 16:52
Оценка: 10 (1)
Здравствуйте, vmpire, Вы писали:

V>MAX и MIN работают по строкам, а GREATEST и LEAST — по столбцам.

V>Понятно, что можно перевести одно в другое, но это зачастую сильно усложнеяет и замедляет запрос.
V>Заменой GREATEST и LEAST мог бы служить CASE, но при большом количестве аргументов он будет ну очень громоздким.


Logical functions — GREATEST (Transact-SQL)
Logical functions — LEAST (Transact-SQL)

Их уже даже в 2022 sql server добавили.
Спасибо!
https://github.com/BlackEric001
Re[3]: Опубликован стандарт SQL:2023
От: Jester Канада  
Дата: 07.06.23 17:56
Оценка: +1
Здравствуйте, BlackEric, Вы писали:

BE>Их уже даже в 2022 sql server добавили.


Именно, что "даже". В Оракле они вообще с незапамятных времён. Ещё как минимум с 7-го Оракла, а может и ещё раньше — а это уже лет 25 как минимум.
Re: Опубликован стандарт SQL:2023
От: Jester Канада  
Дата: 07.06.23 18:05
Оценка:
Здравствуйте, BlackEric, Вы писали:

BE>

Добавлены новые функции GREATEST и LEAST, выбирающие наибольшее и наименьшее значение из переданного списка. Например:


BE>Собственно вопрос: в чем смысл функций GREATEST и LEAST. Они же практически дублируют MAX() и MIN()?


MAX() и MIN() — агрегирующие функции, работают по группам, не поддерживают список параметров. GREATEST и LEAST — обычные линейные функции, работают на уровне строки.
Удобство в том, что иногда нужно вернуть из таблицы значение с каким-то минимальным/максималыным порогом. Не фильтровать, а именно выбрать, типа:
если значение выше порога — вернуть значение, иначе — вернуть пороговое значение. Как-то так. Это, конечно, можно как-то расшить через CASE (как уже было замечено),
но именно что — "как-то".
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.