2010-05-29 23 views
94

¿Cómo puedo encontrar el máximo (o mínimo) de dos enteros en Postgres/SQL? Uno de los enteros no es un valor de columna.¿Cómo obtener min/max de dos enteros en Postgres/SQL?

daré un escenario de ejemplo:

quisiera restar un número entero de una columna (en todas las filas), pero el resultado no debería ser menor que cero. Entonces, para empezar, tengo:

UPDATE my_table 
SET my_column = my_column - 10; 

Pero esto puede hacer que algunos de los valores sean negativos. Lo que me gustaría (en pseudo código) es:

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

Respuesta

176

Eche un vistazo a GREATEST and LEAST.

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

desea que el sql en línea case:

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

max() es una función de agregado y obtiene el máximo de una fila de un conjunto de resultados.

Editar: Vaya, no sabía acerca de greatest y least en postgres. Usa eso en cambio.

+7

Esta versión es útil si está restringido a SQL estándar. –

Cuestiones relacionadas