Como obter min / max de dois números inteiros no Postgres / SQL?


146

Como encontro o máximo (ou mínimo) de dois números inteiros no Postgres / SQL? Um dos números inteiros não é um valor da coluna.

Vou dar um exemplo de cenário:

Gostaria de subtrair um número inteiro de uma coluna (em todas as linhas), mas o resultado não deve ser menor que zero. Então, para começar, eu tenho:

UPDATE my_table
SET my_column = my_column - 10;

Mas isso pode tornar alguns dos valores negativos. O que eu gostaria (em pseudo código) é:

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

De maneira semelhante, você pode criar um conjunto de dados de união e, no máximo, isso, no sql-server pelo menos stackoverflow.com/questions/124417/…
Kzqai

Respostas:



17

Você deseja o sql embutido case:

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

max() é uma função agregada e obtém o máximo de uma linha de um conjunto de resultados.

Edit: oops, não sabia sobre greateste leastno postgres. Use isso em seu lugar.


10
Esta versão é útil se você estiver restrito ao SQL padrão.
quer
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.