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

Comment trouver le maximum (ou le minimum) de deux entiers dans Postgres / SQL? L'un des 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 valeurs négatives. Ce que je voudrais (en pseudo code) est:

UPDATE my_table
SET my_column = MAXIMUM(my_column - 10, 0);
103
demandé sur HRJ 2010-05-29 23:38:21

2 réponses

Jetez un oeil à le plus grand et le moins .

UPDATE my_table
SET my_column = GREATEST(my_column - 10, 0);
202
répondu Mark Byers 2015-01-08 15:35:16

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 résultat.

Edit: Oups, ne connaissait pas greatest et least dans postgres. Utiliser à la place.

12
répondu Donnie 2016-04-21 15:11:34