Bagaimana cara mendapatkan min / maks dua bilangan bulat di Postgres / SQL?


147

Bagaimana cara menemukan maksimum (atau minimum) dari dua bilangan bulat di Postgres / SQL? Salah satu bilangan bulat bukan nilai kolom.

Saya akan memberikan contoh skenario:

Saya ingin mengurangi bilangan bulat dari kolom (dalam semua baris), tetapi hasilnya tidak boleh kurang dari nol. Jadi, untuk memulai, saya punya:

UPDATE my_table
SET my_column = my_column - 10;

Tetapi ini dapat membuat beberapa nilai menjadi negatif. Yang saya inginkan (dalam kode pseudo) adalah:

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

Terkait Anda dapat membuat kumpulan data serikat dan kemudian maks itu, di sql-server setidaknya stackoverflow.com/questions/124417/…
Kzqai

Jawaban:



17

Anda ingin inline sql case:

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

max() adalah fungsi agregat dan mendapatkan maksimum satu baris dari set hasil.

Sunting: oops, tidak tahu tentang greatestdan leastdi postgres. Gunakan itu sebagai gantinya.


10
Versi ini berguna jika Anda terbatas pada SQL standar.
Don Kirkby
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.