GROUP BY HAVING का उपयोग करके अधिकतम काउंट वाला रिकॉर्ड खोजना
इसके लिए GROUP BY HAVING क्लॉज का उपयोग करें। आइए पहले एक टेबल बनाते हैं:
mysql> CREATE TABLE DemoTable (
Value INT
);
टेबल में रिकॉर्ड्स इन्सर्ट करें:
mysql> INSERT INTO DemoTable VALUES (88); mysql> INSERT INTO DemoTable VALUES (88); mysql> INSERT INTO DemoTable VALUES (88); mysql> INSERT INTO DemoTable VALUES (99); mysql> INSERT INTO DemoTable VALUES (99); mysql> INSERT INTO DemoTable VALUES (99); mysql> INSERT INTO DemoTable VALUES (99); mysql> INSERT INTO DemoTable VALUES (100); mysql> INSERT INTO DemoTable VALUES (100); mysql> INSERT INTO DemoTable VALUES (88); mysql> INSERT INTO DemoTable VALUES (88);
सभी रिकॉर्ड्स देखें:
mysql> SELECT * FROM DemoTable;
आउटपुट:
+-------+ | Value | +-------+ | 88 | | 88 | | 88 | | 99 | | 99 | | 99 | | 99 | | 100 | | 100 | | 88 | | 88 | +-------+
अधिकतम काउंट वाले मान को उसके काउंट के साथ प्रदर्शित करने के लिए क्वेरी:
mysql> SELECT Value, COUNT(*) AS NumberOfCount
FROM DemoTable
GROUP BY Value
HAVING COUNT(*) = (
SELECT COUNT(*) AS NumberOfCount
FROM DemoTable
GROUP BY Value
ORDER BY NumberOfCount DESC
LIMIT 1
);
आउटपुट:
+-------+---------------+ | Value | NumberOfCount | +-------+---------------+ | 88 | 5 | +-------+---------------+
व्याख्या: सबक्वेरी पहले प्रत्येक मान का काउंट निकालती है, फिर उन्हें डिसेंडिंग ऑर्डर में सॉर्ट करके सबसे ऊपर वाले (अधिकतम काउंट) को चुनती है। मुख्य क्वेरी HAVING क्लॉज का उपयोग करके केवल उसी मान को चुनती है जिसका काउंट इस अधिकतम काउंट के बराबर हो।