Wie bekomme ich min / max von zwei ganzen Zahlen in Postgres / SQL?


146

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

Ich werde ein Beispielszenario geben:

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

UPDATE my_table
SET my_column = my_column - 10;

Dies kann jedoch einige der Werte negativ machen. Was ich möchte (im Pseudocode) ist:

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

In diesem Zusammenhang können Sie einen Union-Datensatz erstellen und diesen dann maximal in sql-server mindestens stackoverflow.com/questions/124417/…
Kzqai

Antworten:



17

Sie möchten 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 das Maximum einer Zeile einer Ergebnismenge.

Edit: oops, wusste nichts über greatestund leastin postgres. Verwenden Sie das stattdessen.


10
Diese Version ist nützlich, wenn Sie auf Standard-SQL beschränkt sind.
Don Kirkby
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.