MySQL MAX()
फ़ंक्शन एक समग्र फ़ंक्शन है जो किसी व्यंजक से अधिकतम मान देता है।
आम तौर पर, अभिव्यक्ति कॉलम में अलग-अलग पंक्तियों के रूप में लौटाए गए मानों की एक श्रृंखला होगी, और आप इस फ़ंक्शन का उपयोग लौटाई गई पंक्तियों से अधिकतम मान खोजने के लिए कर सकते हैं। यदि कोई मेल खाने वाली पंक्तियाँ नहीं हैं, तो MAX()
रिटर्न NULL
।
उदाहरण के लिए, आप इस फ़ंक्शन का उपयोग यह पता लगाने के लिए कर सकते हैं कि शहरों की सूची में से किस शहर की जनसंख्या सबसे अधिक है।
सिंटैक्स
MAX()
. का सिंटैक्स इस तरह जाता है:
MAX([DISTINCT] expr) [over_clause]
जहां expr
वह अभिव्यक्ति है जिसके लिए आप अधिकतम मूल्य चाहते हैं।
over_clause
एक वैकल्पिक क्लॉज है जो विंडो फ़ंक्शंस के साथ काम करता है। ध्यान दें कि over_clause
केवल तभी उपयोग किया जा सकता है जब आप DISTINCT
. का उपयोग नहीं करते हैं कीवर्ड।
(वैकल्पिक) DISTINCT
कीवर्ड का उपयोग डुप्लिकेट मानों को समाप्त करने के लिए किया जा सकता है।
मूल उदाहरण
सबसे पहले, यहां कच्चा डेटा है जिसका उपयोग हम इस उदाहरण में करेंगे:
USE world; SELECT Name, Population FROM City WHERE CountryCode = 'THA';
परिणाम:
+-------------------+------------+ | Name | Population | +-------------------+------------+ | Bangkok | 6320174 | | Nonthaburi | 292100 | | Nakhon Ratchasima | 181400 | | Chiang Mai | 171100 | | Udon Thani | 158100 | | Hat Yai | 148632 | | Khon Kaen | 126500 | | Pak Kret | 126055 | | Nakhon Sawan | 123800 | | Ubon Ratchathani | 116300 | | Songkhla | 94900 | | Nakhon Pathom | 94100 | +-------------------+------------+
हम MAX()
. का उपयोग कर सकते हैं सबसे बड़ी आबादी वाले शहर को खोजने के लिए कार्य करें (अर्थात इसके जनसंख्या कॉलम में अधिकतम मान वाली पंक्ति)।
USE world; SELECT MAX(Population) AS 'Maximum Value' FROM City WHERE CountryCode = 'THA';
परिणाम:
+---------------+ | Maximum Value | +---------------+ | 6320174 | +---------------+
ग्रुप बाय क्लॉज
हम GROUP BY
. का उपयोग कर सकते हैं उस देश के सबसे बड़े शहर (जनसंख्या के अनुसार) की आबादी के साथ प्रत्येक देश को सूचीबद्ध करने के लिए खंड:
USE world; SELECT District, MAX(Population) AS 'Max Value' FROM City WHERE CountryCode = 'AUS' GROUP BY District;
परिणाम:
+-----------------+-----------+ | District | Max Value | +-----------------+-----------+ | New South Wales | 3276207 | | Victoria | 2865329 | | Queensland | 1291117 | | West Australia | 1096829 | | South Australia | 978100 | | Capital Region | 322723 | | Tasmania | 126118 | +-----------------+-----------+
द ऑर्डर बाय क्लॉज
हम ORDER BY
. का भी उपयोग कर सकते हैं एक कॉलम निर्दिष्ट करने के लिए क्लॉज जिसके द्वारा ऑर्डर करना है:
USE world; SELECT District, MAX(Population) AS 'Max Value' FROM City WHERE CountryCode = 'AUS' GROUP BY District ORDER BY `Max Value` ASC;
परिणाम:
+-----------------+-----------+ | District | Max Value | +-----------------+-----------+ | Tasmania | 126118 | | Capital Region | 322723 | | South Australia | 978100 | | West Australia | 1096829 | | Queensland | 1291117 | | Victoria | 2865329 | | New South Wales | 3276207 | +-----------------+-----------+
यह परिणामों को आरोही क्रम में क्रमित करता है, जो पहले न्यूनतम मान को सूचीबद्ध करता है।
ध्यान दें कि, बहु-शब्द उपनाम (जैसे `Max Value`
. द्वारा आदेश देते समय ), आपको बैकटिक वर्ण का उपयोग करना होगा (`
) धर्मोपदेश के बजाय ('
) दो शब्दों को घेरने के लिए।
अधिकतम वर्ण लंबाई ज्ञात करें
MAX()
फ़ंक्शन केवल संख्यात्मक डेटा वाले कॉलम तक सीमित नहीं है। आप MAX()
. को भी जोड़ सकते हैं अन्य क्षेत्रों में अधिकतम मान वापस करने के लिए अन्य कार्यों के साथ।
उदाहरण के लिए, हमारे नमूना डेटा का उपयोग करके, हम City
में वर्णों की अधिकतम संख्या के साथ मान प्राप्त कर सकते हैं कॉलम:
SELECT MAX(CHAR_LENGTH(Name)) AS 'Maximum Character Length' FROM city;
परिणाम:
+--------------------------+ | Maximum Character Length | +--------------------------+ | 34 | +--------------------------+
हम इसे निम्न क्वेरी का उपयोग करके भी देख सकते हैं (जिसमें MAX()
. शामिल नहीं है समारोह):
SELECT Name, CHAR_LENGTH(Name) AS 'Character Length' FROM city ORDER BY `Character Length` DESC LIMIT 10;
परिणाम:
+--------------------------------------+------------------+ | Name | Character Length | +--------------------------------------+------------------+ | Luxembourg [Luxemburg/Lëtzebuerg] | 34 | | Castellón de la Plana [Castell | 31 | | San Fernando del Valle de Cata | 30 | | Santo Domingo de los Colorados | 30 | | Thiruvananthapuram (Trivandrum | 30 | | [San Cristóbal de] la Laguna | 29 | | Ingraj Bazar (English Bazar) | 28 | | Soledad de Graciano Sánchez | 28 | | Valle de Chalco Solidaridad | 27 | | Machilipatnam (Masulipatam) | 27 | +--------------------------------------+------------------+
ओवर क्लॉज का उपयोग करना
जैसा कि उल्लेख किया गया है, सिंटैक्स OVER
. के लिए अनुमति देता है आपके प्रश्नों में शामिल करने के लिए खंड। मूल रूप से, OVER
क्लॉज आपको यह निर्दिष्ट करने की अनुमति देता है कि विंडो फ़ंक्शन द्वारा प्रसंस्करण के लिए क्वेरी पंक्तियों को समूहों में कैसे विभाजित किया जाए।
यहां एक उदाहरण दिया गया है:
SELECT District, Name AS City, Population AS 'City Population', MAX(Population) OVER(PARTITION BY District) AS 'District Max' FROM City WHERE CountryCode = 'AUS' ORDER BY `District Max` DESC;
परिणाम:
+-----------------+---------------+-----------------+--------------+ | District | City | City Population | District Max | +-----------------+---------------+-----------------+--------------+ | New South Wales | Sydney | 3276207 | 3276207 | | New South Wales | Wollongong | 219761 | 3276207 | | New South Wales | Newcastle | 270324 | 3276207 | | New South Wales | Central Coast | 227657 | 3276207 | | Victoria | Melbourne | 2865329 | 2865329 | | Victoria | Geelong | 125382 | 2865329 | | Queensland | Townsville | 109914 | 1291117 | | Queensland | Brisbane | 1291117 | 1291117 | | Queensland | Cairns | 92273 | 1291117 | | Queensland | Gold Coast | 311932 | 1291117 | | West Australia | Perth | 1096829 | 1096829 | | South Australia | Adelaide | 978100 | 978100 | | Capital Region | Canberra | 322723 | 322723 | | Tasmania | Hobart | 126118 | 126118 | +-----------------+---------------+-----------------+--------------+
यह उदाहरण पंक्तियों को District
. द्वारा विभाजित करता है , प्रत्येक विभाजन (जिला) के लिए अधिकतम मूल्य प्रदान करना। इससे आप अधिक विस्तृत डेटा देख सकते हैं, जैसे कि प्रत्येक शहर की जनसंख्या, साथ ही उसी जिले के सबसे बड़े शहर की जनसंख्या।