Postgres / SQL'de min / max iki tam sayı nasıl elde edilir?


151

Postgres / SQL'de iki tam sayının maksimumunu (veya minimumunu) nasıl bulabilirim? Tam sayılardan biri sütun değeri değil.

Örnek bir senaryo vereceğim:

Bir sütundan (tüm satırlarda) bir tamsayı çıkarmak istiyorum, ancak sonuç sıfırdan küçük olmamalıdır. Yani, başlamak için elimde:

UPDATE my_table
SET my_column = my_column - 10;

Ancak bu, bazı değerleri negatif yapabilir. İstediğim şey (sözde kodda):

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

Buna bağlı olarak, bir birleşim veri kümesi oluşturabilir ve ardından bunu maksimize edebilirsiniz, sql-server'da en azından stackoverflow.com/questions/124417/…
Kzqai

Yanıtlar:



17

Satır içi sql'yi istiyorsunuz case:

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

max() bir toplama işlevidir ve bir sonuç kümesinin maksimum satırını alır.

Düzenleme: oops, postgres hakkında greatestve leastyazdıklarında bilmiyordum . Onun yerine bunu kullan.


10
Bu sürüm, standart SQL ile sınırlıysanız kullanışlıdır.
Don Kirkby
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.