MySQL में GROUP BY और MAX() का उपयोग करके प्रत्येक समूह (जैसे देश) के लिए अधिकतम मान (जैसे जनसंख्या) प्राप्त किया जा सकता है।
उदाहरण
देश जनसंख्या तालिका:
mysql> CREATE TABLE DemoTable (CountryName VARCHAR(20), Population INT);
mysql> INSERT INTO DemoTable VALUES ('US', 560), ('UK', 10090), ('UK', 8794), ('US', 1090);
डेटा
+-------------+------------+
| CountryName | Population |
+-------------+------------+
| US | 560 |
| UK | 10090 |
| UK | 8794 |
| US | 1090 |
+-------------+------------+
क्वेरी: प्रत्येक देश के लिए अधिकतम जनसंख्या
mysql> SELECT CountryName, MAX(Population) FROM DemoTable GROUP BY CountryName;
परिणाम
+-------------+-----------------+
| CountryName | max(Population) |
+-------------+-----------------+
| US | 1090 |
| UK | 10090 |
+-------------+-----------------+
व्याख्या
- US: MAX(560, 1090) = 1090
- UK: MAX(10090, 8794) = 10090
विस्तार: एकाधिक एग्रीगेशन
SELECT
CountryName,
MAX(Population) AS MaxPop,
MIN(Population) AS MinPop,
AVG(Population) AS AvgPop,
SUM(Population) AS TotalPop,
COUNT(*) AS Records
FROM DemoTable
GROUP BY CountryName;
HAVING के साथ फ़िल्टर
SELECT CountryName, MAX(Population)
FROM DemoTable
GROUP BY CountryName
HAVING MAX(Population) > 5000;
मुख्य बिंदु
GROUP BY- समान देश वाली पंक्तियों को समूहित करता हैMAX()- प्रत्येक समूह के लिए अधिकतम मानSELECTमें केवल समूहीकृत कॉलम या एग्रीगेट फ़ंक्शन- इंडेक्स
(CountryName, Population)क्वेरी को तेज़ करता है
उपयोग केस
- श्रेणी-वार अधिकतम बिक्री
- प्रति-उपयोगकर्ता उच्चतम स्कोर
- प्रति-दिन अधिकतम तापमान
- विभाग-वार उच्चतम वेतन