2010-05-29 9 views
94

Wie finde ich das Maximum (oder Minimum) von zwei ganzen Zahlen in Postgres/SQL? Eine der ganzen Zahlen ist kein Spaltenwert.Wie bekomme ich min/max von zwei ganzen Zahlen in Postgres/SQL?

Ich werde ein Beispiel-Szenario geben:

Ich mag würde eine ganze Zahl von einer Säule (in allen Zeilen), aber das Ergebnis sollte nicht kleiner als Null sein subtrahieren. Also, um zu beginnen, habe ich:

Aber dies kann einige der Werte negativ machen. Was ich möchte (in Pseudo-Code) ist:

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

Antwort

176

Werfen Sie einen Blick auf GREATEST and LEAST.

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

Sie wollen die Inline-SQL case:

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

max() ist eine Aggregatfunktion und erhält die maximal eine Zeile einer Ergebnismenge.

Bearbeiten: oops, wusste nicht über greatest und least in Postgres. Benutze das stattdessen.

+7

Diese Version ist nützlich, wenn Sie auf Standard-SQL beschränkt sind. –

Verwandte Themen