2010-05-29 17 views
94

पोस्टग्रेस/एसक्यूएल में अधिकतम दो पूर्णांकों को अधिकतम (या न्यूनतम) कैसे मिल सकता है? पूर्णांक में से एक कॉलम मान नहीं है।पोस्टग्रेस/एसक्यूएल में न्यूनतम/अधिकतम दो पूर्णांक कैसे प्राप्त करें?

मैं एक उदाहरण परिदृश्य दे देंगे:

मैं एक स्तंभ (सभी पंक्तियों में) से एक पूर्णांक घटाना चाहते हैं, लेकिन परिणाम शून्य से कम नहीं होना चाहिए। तो, शुरू करने के लिए, मेरे पास है:

UPDATE my_table 
SET my_column = my_column - 10; 

लेकिन इससे कुछ मूल्य नकारात्मक हो सकते हैं। क्या मैं (छद्म कोड में) चाहते हैं:

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

उत्तर

176

GREATEST and LEAST पर एक नज़र डालें।

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

आप इनलाइन एसक्यूएल case हैं:

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

max() एक समग्र समारोह है और एक परिणाम के सेट की एक पंक्ति की अधिकतम हो जाता है।

संपादित करें: ओओएस, पोस्टग्रेज़ में greatest और least के बारे में नहीं पता था। इसके बजाय इसका प्रयोग करें।

+7

यह संस्करण उपयोगी है यदि आप मानक SQL तक सीमित हैं। –

संबंधित मुद्दे