Postgres में मुझे दो क्षेत्रों का MIN () कैसे मिलेगा?


140

मान लीजिए कि मेरे पास एक तालिका है:

name | score_a | score_b
-----+---------+--------
 Joe |   100   |   24
 Sam |    96   |  438
 Bob |    76   |  101
 ... |   ...   |  ...

मैं स्कोर_ए और स्कोर_बी में से न्यूनतम का चयन करना चाहता हूं। दूसरे शब्दों में, कुछ इस तरह:

SELECT name, MIN(score_a, score_b)
FROM table

परिणाम, निश्चित रूप से होगा:

name | min
-----+-----
 Joe |  24
 Sam |  96
 Bob |  76
 ... | ...

हालाँकि, जब मैं Postgres में यह कोशिश करता हूं, मुझे लगता है, "कोई भी फ़ंक्शन दिए गए नाम और तर्क प्रकारों से मेल नहीं खाता है। आपको स्पष्ट प्रकार की जातियों को जोड़ने की आवश्यकता हो सकती है।" MAX () और MIN () कॉलम के बजाय पंक्तियों में काम करते दिखाई देते हैं।

क्या यह संभव है कि मैं क्या करने का प्रयास कर रहा हूं?

जवाबों:


246

LEAST (ए, बी):

GREATESTऔर LEASTकार्यों भाव के किसी भी संख्या की एक सूची से बढ़ते या घटते मूल्य का चयन करें। भाव सभी को एक सामान्य डेटा प्रकार के लिए परिवर्तनीय होना चाहिए, जो परिणाम का प्रकार होगा ( विवरण के लिए धारा 10.5 देखें)। सूची में पूर्ण मानों को अनदेखा किया जाता है। परिणाम NULL तभी होगा जब सभी भाव NULL का मूल्यांकन करेंगे।

ध्यान दें कि GREATESTऔर LEASTSQL मानक में नहीं हैं, लेकिन एक सामान्य एक्सटेंशन हैं। कुछ अन्य डेटाबेस उन्हें NULL लौटाते हैं यदि कोई भी तर्क NULL है, बजाय केवल तभी जब सभी NULL हैं ...


20
मेरे जैसे लोगों के लिए जिन्हें MAX()दो मूल्यों की भी आवश्यकता होगी , यह है GREATEST(a, b):)
vektor


-16

आप उस डेटा को इस तरह एक कॉलम में डालकर उत्तर प्राप्त कर सकते हैं:

SELECT name, MIN(score_a, score_b) as minimum_score
FROM table

यहाँ, हम के बीच न्यूनतम मूल्य लगा रहे हैं score_aऔर score_bऔर नाम के एक स्तंभ में है कि मूल्य भंडारण के द्वारा एक ही मुद्रण minimum_score


केवल min(expression)विद्यमान है। डॉक्टर से परिभाषा: ' अभिव्यक्ति' के साथ सभी इनपुट मूल्यों पर अभिव्यक्ति का न्यूनतम मूल्य किसी भी संख्यात्मक, स्ट्रिंग, तिथि / समय, नेटवर्क, या एनम प्रकार, या इन प्रकारों के सरणियों है
charlesdg
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.