GROUP BY + COUNT + ORDER BY + LIMIT से टॉप-N आवृत्ति
कॉलम में सबसे अधिक बार आने वाले शीर्ष 10 मान और उनकी गिनती प्राप्त करने के लिए GROUP BY, COUNT(*), ORDER BY, LIMIT संयोजित करें।
सिंटैक्स
SELECT yourColumnName, COUNT(*) FROM yourTableName GROUP BY yourColumnName ORDER BY COUNT(*) DESC LIMIT 10;
उदाहरण: टेबल और डेटा (20 पंक्तियाँ)
mysql> CREATE TABLE countTop10Demo (Value INT);
mysql> INSERT INTO countTop10Demo VALUES (10), (1100), (200), (2100), (1100), (450), (600), (2100), (150), (16454), (450), (2350), (1780), (1345), (34), (2100), (19034), (1844), (34), (16454);
क्वेरी और परिणाम
mysql> SELECT Value, COUNT(*)
-> FROM countTop10Demo
-> GROUP BY Value
-> ORDER BY COUNT(*) DESC
-> LIMIT 10;
+-------+----------+ | Value | COUNT(*) | +-------+----------+ | 2100 | 3 | | 1100 | 2 | | 34 | 2 | | 450 | 2 | | 16454 | 2 | | 1780 | 1 | | 200 | 1 | | 1345 | 1 | | 19034 | 1 | | 600 | 1 | +-------+----------+
व्याख्या
GROUP BY Value- समान मान वाली पंक्तियाँ समूहितCOUNT(*)- प्रत्येक समूह की पंक्ति गिनतीORDER BY COUNT(*) DESC- गिनती के अवरोही क्रमLIMIT 10- शीर्ष 10
टाई-हैंडलिंग
समान गिनती वाले मानों का क्रम अनिर्धारित होता है। स्थिर क्रम के लिए द्वितीयक सॉर्ट जोड़ें:
ORDER BY COUNT(*) DESC, Value ASC
प्रतिशत भी दिखाएं
SELECT Value, COUNT(*) AS cnt,
ROUND(COUNT(*) * 100.0 / (SELECT COUNT(*) FROM countTop10Demo), 2) AS pct
FROM countTop10Demo
GROUP BY Value
ORDER BY cnt DESC
LIMIT 10;