2010-05-29 5 views
94

Comment trouver le maximum (ou le minimum) de deux entiers dans Postgres/SQL? L'un des entiers n'est pas une valeur de colonne.Comment obtenir min/max de deux entiers dans Postgres/SQL?

Je donnerai un exemple de scénario:

Je voudrais soustraire un nombre entier d'une colonne (dans toutes les lignes), mais le résultat ne doit pas être inférieur à zéro. Donc, pour commencer, j'ai:

UPDATE my_table 
SET my_column = my_column - 10; 

Mais cela peut rendre certaines des valeurs négatives. Ce que je voudrais (dans le code pseudo) est:

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

Répondre

176

Jetez un oeil à GREATEST and LEAST.

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

Vous voulez sql en ligne case:

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

max() est une fonction d'agrégation et obtient le maximum d'une ligne d'un jeu de résultats. Editer: oops, ne connaissait pas greatest et least dans postgres. Utilisez cela à la place.

+7

Cette version est utile si vous êtes limité à SQL standard. –

Questions connexes