¿Cómo obtener min / max de dos enteros en Postgres / SQL?


147

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

Daré un escenario de ejemplo:

Me gustaría restar un número entero de una columna (en todas las filas), pero el resultado no debe 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 pseudocódigo) es:

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

De manera relacionada, puede crear un conjunto de datos de unión y luego maximizarlo, en sql-server al menos stackoverflow.com/questions/124417/…
Kzqai

Respuestas:



17

Desea 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 agregada y obtiene el máximo de una fila de un conjunto de resultados.

Editar: oops, no sabía greatesty leasten postgres. Use eso en su lugar.


10
Esta versión es útil si está restringido a SQL estándar.
Don Kirkby
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.