Как получить мин / макс двух целых чисел в Postgres / SQL? - PullRequest
123 голосов
/ 29 мая 2010

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

Я приведу пример сценария:

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

UPDATE my_table
SET my_column = my_column - 10;

Но это может сделать некоторые значения отрицательными. Что я хотел бы (в псевдокоде):

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

Ответы [ 2 ]

240 голосов
/ 29 мая 2010

Взгляните на ВЕЛИКИЙ и НАИМЕНЕЕ .

UPDATE my_table
SET my_column = GREATEST(my_column - 10, 0);
13 голосов
/ 29 мая 2010

Вы хотите встроенный sql case:

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

max() является агрегатной функцией и получает максимум строки из набора результатов.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...