MySQL में किसी कॉलम में सबसे अधिक बार आने वाले मान (मोड/Mode) को खोजने के लिए, GROUP BY के साथ COUNT(*) गिनें, फिर ORDER BY COUNT(*) DESC और LIMIT 1 से शीर्ष परिणाम लें।
उदाहरण: सबसे आम FirstName खोजना
डेमो टेबल बनाएं:
mysql> CREATE TABLE DemoTable1940 (FirstName VARCHAR(20));
डेटा इन्सर्ट करें:
mysql> INSERT INTO DemoTable1940 VALUES
('Chris'), ('Mike'), ('Adam'), ('Mike'), ('Chris'), ('David'), ('Mike');
डेटा:
+-----------+ | FirstName | +-----------+ | Chris | | Mike | | Adam | | Mike | | Chris | | David | | Mike | +-----------+
सबसे अधिक गिनती वाला नाम खोजें:
mysql> SELECT FirstName FROM DemoTable1940 GROUP BY FirstName ORDER BY COUNT(*) DESC LIMIT 1;
आउटपुट:
+-----------+ | FirstName | +-----------+ | Mike | +-----------+
गिनती के साथ परिणाम
SELECT FirstName, COUNT(*) AS frequency FROM DemoTable1940 GROUP BY FirstName ORDER BY frequency DESC LIMIT 1;
आउटपुट:
+-----------+-----------+ | FirstName | frequency | +-----------+-----------+ | Mike | 3 | +-----------+-----------+
टाई (बराबरी) संभालना
यदि एकाधिक मानों की समान अधिकतम गिनती हो:
सभी टॉप मान दिखाएं
SELECT FirstName, COUNT(*) AS freq
FROM DemoTable1940
GROUP BY FirstName
HAVING COUNT(*) = (
SELECT MAX(cnt) FROM (
SELECT COUNT(*) AS cnt FROM DemoTable1940 GROUP BY FirstName
) AS t
);
MySQL 8.0+ विंडो फंक्शन के साथ
WITH ranked AS (
SELECT FirstName, COUNT(*) AS freq,
RANK() OVER (ORDER BY COUNT(*) DESC) AS rnk
FROM DemoTable1940
GROUP BY FirstName
)
SELECT FirstName, freq FROM ranked WHERE rnk = 1;
उपयोग के मामले
- सबसे लोकप्रिय उत्पाद/श्रेणी
- सबसे आम त्रुटि कोड
- सबसे सक्रिय यूज़र/आईपी
- सबसे बिकने वाला आइटम
प्रदर्शन
- कॉलम पर इंडेक्स:
INDEX idx_name (FirstName) - कवरिंग इंडेक्स:
INDEX idx_name (FirstName)ही काफी (केवल इंडेक्स स्कैन) - बहुत बड़े टेबल्स के लिए: सैंपलिंग या सामग्रीकृत दृश्य पर विचार करें
नोट
यह क्वेरी "मोड" (सांख्यिकी में सबसे अधिक बार आने वाला मान) खोजती है। LIMIT 1 मनमाने ढंग से एक चुनता है यदि टाई हो; ऊपर दिए गए HAVING/विंडो फंक्शन दृष्टिकोण सभी टॉप मान लौटाते हैं।