2010-05-29 16 views
94

Come si trova il massimo (o minimo) di due numeri interi in Postgres/SQL? Uno degli interi non è un valore di colonna.Come ottenere min/max di due numeri interi in Postgres/SQL?

Darò un esempio scenario:

desidero 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 dei valori negativi. Quello che vorrei (in pseudo codice) è:

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

risposta

176

Dai un'occhiata allo GREATEST and LEAST.

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

si desidera che lo sql in linea case:

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

max() è una funzione di aggregazione e ottiene il massimo di una fila di un set di risultati.

Modifica: oops, non so su greatest e least in postgres. Usalo invece.

+7

Questa versione è utile se sei limitato allo standard SQL. –

Problemi correlati