239 Stimmen

Wie bekomme ich das Minimum/Maximum von zwei Ganzzahlen in Postgres/SQL?

Wie finde ich das Maximum (oder Minimum) von zwei Ganzzahlen in Postgres/SQL? Eine der Ganzzahlen ist kein Spaltenwert.

Ich gebe ein Beispiel Szenario:

Ich möchte eine Ganzzahl von einer Spalte subtrahieren (in allen Zeilen), aber das Ergebnis sollte nicht kleiner als null sein. Also habe ich zunächst:

UPDATE my_table
SET my_column = my_column - 10;

Aber dadurch können einige Werte negativ werden. Was ich gerne hätte (in Pseudocode) ist:

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

0 Stimmen

In diesem Zusammenhang können Sie ein Union-Dataset erstellen und dann das Maximum davon in SQL Server errechnen, zumindest stackoverflow.com/questions/124417/…

477voto

Mark Byers Punkte 761508

Schauen Sie sich GREATEST und LEAST an.

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

22voto

Donnie Punkte 43338

Sie möchten den Inline-SQL-case:

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

max() ist eine Aggregatfunktion und gibt das Maximum einer Zeile eines Ergebnissets zurück.

Bearbeitung: Hoppla, ich kannte greatest und least in postgres nicht. Verwenden Sie stattdessen das.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X