MySQL में GROUP BY और COUNT() का उपयोग करके कॉलम में प्रत्येक विशिष्ट मान की आवृत्ति गिनें और घटते क्रम में क्रमबद्ध करें।
उदाहरण: टेबल बनाना और डेटा डालना
mysql> CREATE TABLE DemoTable (
-> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> PostMessage VARCHAR(100)
-> );
Query OK, 0 rows affected (0.69 sec)
mysql> INSERT INTO DemoTable(PostMessage) VALUES
-> ('Hi'), ('Hello'), ('Hi'), ('Awesome'), ('Hello'), ('Hi'), ('Awesome');
सभी रिकॉर्ड देखना
mysql> SELECT * FROM DemoTable;
आउटपुट
+----+-------------+ | Id | PostMessage | +----+-------------+ | 1 | Hi | | 2 | Hello | | 3 | Hi | | 4 | Awesome | | 5 | Hello | | 6 | Hi | | 7 | Awesome | +----+-------------+ 7 rows in set (0.00 sec)
प्रति मान गिनती, घटते क्रम में
mysql> SELECT PostMessage, COUNT(Id) FROM DemoTable
-> GROUP BY PostMessage
-> ORDER BY COUNT(Id) DESC;
आउटपुट
+-------------+-----------+ | PostMessage | COUNT(Id) | +-------------+-----------+ | Hi | 3 | | Hello | 2 | | Awesome | 2 | +-------------+-----------+ 3 rows in set (0.00 sec)
केवल सर्वाधिक बार आने वाला मान (टॉप 1):
mysql> SELECT PostMessage, COUNT(Id) FROM DemoTable
-> GROUP BY PostMessage
-> HAVING COUNT(Id) > 2;
आउटपुट
+-------------+-----------+ | PostMessage | COUNT(Id) | +-------------+-----------+ | Hi | 3 | +-------------+-----------+ 1 row in set (0.00 sec)
मुख्य अंतर:
WHERE- ग्रुपिंग से पहले पंक्तियाँ फ़िल्टर करता हैHAVING- ग्रुपिंग के बाद समूह फ़िल्टर करता है (एग्रीगेट फ़ंक्शन उपयोग कर सकते हैं)
प्रदर्शन: PostMessage पर इंडेक्स GROUP BY को तेज़ करेगा।