174 votes

Comment obtenir le minimum et le maximum 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 vous donner 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 (en pseudo-code) est :

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

0 votes

De même, vous pouvez créer un ensemble de données d'union et le maximiser, du moins dans sql-server. stackoverflow.com/questions/124417/

350voto

Mark Byers Points 318575

Jetez un coup d'œil à Le plus grand et le plus petit .

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

19voto

Donnie Points 17312

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 ensemble de résultats.

Edit : oops, je ne savais pas pour greatest et least dans postgres. Utilisez-le à la place.

12 votes

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X