Comment obtenir le min / max de deux entiers dans Postgres / SQL?

147

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

Je vais donner un exemple de scénario:

Je voudrais soustraire un 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 (en pseudo code) c'est:

UPDATE my_table
SET my_column = MAXIMUM(my_column - 10, 0);
HRJ
la source
De même, vous pouvez créer un ensemble de données d'union, puis maximiser cela, dans sql-server au moins stackoverflow.com/questions/124417
...

Réponses:

17

Vous voulez le 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.

Edit: oups, je ne savais pas greatestet leastdans postgres. Utilisez cela à la place.

Donnie
la source
10
Cette version est utile si vous êtes limité au SQL standard.
Don Kirkby