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);

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.


10
Cette version est utile si vous êtes limité au SQL standard.
Don Kirkby
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.