Come ottenere min / max di due numeri interi in Postgres / SQL?


147

Come posso trovare il massimo (o minimo) di due numeri interi in Postgres / SQL? Uno dei numeri interi non è un valore di colonna.

Darò uno scenario di esempio:

Vorrei sottrarre un numero intero da una colonna (in tutte le righe), ma il risultato non dovrebbe essere inferiore a zero. Quindi, per cominciare, ho:

UPDATE my_table
SET my_column = my_column - 10;

Ma questo può rendere alcuni valori negativi. Quello che vorrei (in pseudo codice) è:

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

In relazione a è possibile creare un set di dati unione e quindi massima che, in SQL-server almeno stackoverflow.com/questions/124417/...
Kzqai

Risposte:



17

Vuoi il sql in linea case:

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

max() è una funzione aggregata e ottiene il massimo di una riga di un set di risultati.

Modifica: oops, non lo sapevo greateste leastin Postgres. Usa quello invece.


10
Questa versione è utile se si è limitati a SQL standard.
Don Kirkby,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.