Як отримати min / max двох цілих чисел у Postgres / SQL?


147

Як знайти максимум (або мінімум) двох цілих чисел у Postgres / SQL? Одне з цілих чисел не є значенням стовпця.

Я наведу приклад сценарію:

Я б хотів відняти ціле число зі стовпця (у всіх рядках), але результат не повинен бути меншим за нуль. Отже, для початку я маю:

UPDATE my_table
SET my_column = my_column - 10;

Але це може зробити деякі значення негативними. Я б хотів (у псевдокоді):

UPDATE my_table
SET my_column = MAXIMUM(my_column - 10, 0);

Relatedly ви можете створити набір даних союзу , а потім НЕ більш , що в SQL-сервері по крайней мере stackoverflow.com/questions/124417 / ...
Kzqai

Відповіді:



17

Ви хочете вбудовувати sql case:

set my_column = case when my_column - 10 > 0 then my_column - 10 else 0 end

max() є сукупною функцією і отримує максимум рядів набору результатів.

Редагувати: ой, не знав про greatestта leastв postgres. Використовуйте це замість цього.


10
Ця версія корисна, якщо ви обмежені стандартним SQL.
Дон Кіркбі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.