Jak uzyskać min / max dwóch liczb całkowitych w Postgres / SQL?

147

Jak znaleźć maksimum (lub minimum) dwóch liczb całkowitych w Postgres / SQL? Jedna z liczb całkowitych nie jest wartością kolumny.

Podam przykładowy scenariusz:

Chciałbym odjąć liczbę całkowitą z kolumny (we wszystkich wierszach), ale wynik nie powinien być mniejszy niż zero. Na początek mam:

UPDATE my_table
SET my_column = my_column - 10;

Ale może to spowodować, że niektóre wartości będą ujemne. Chciałbym (w pseudokodzie):

UPDATE my_table
SET my_column = MAXIMUM(my_column - 10, 0);
HRJ
źródło
W związku z tym możesz utworzyć zestaw danych unii, a następnie maksymalnie to, w sql-server co najmniej stackoverflow.com/questions/124417/ ...
Kzqai

Odpowiedzi:

17

Chcesz wbudowanego sql case:

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

max() jest funkcją agregującą i pobiera maksimum wiersza w zestawie wyników.

Edit: ups, nie wiedział o greatesti leastw PostgreSQL. Użyj tego zamiast tego.

Donnie
źródło
10
Ta wersja jest przydatna, jeśli jesteś ograniczony do standardowego SQL.
Don Kirkby