GROUP BY और COUNT() का उपयोग करके प्रत्येक विशिष्ट मान की आवृत्ति गिन सकते हैं।
उदाहरण सेटअप
CREATE TABLE DistinctDemo1 (id INT, name VARCHAR(100));
INSERT INTO DistinctDemo1 VALUES
(1,'John'), (2,'John'), (3,'John'), (4,'Carol'), (5,'David');
क्वेरी
SELECT name, COUNT(*) AS OccurrenceValue
FROM DistinctDemo1
GROUP BY name
ORDER BY OccurrenceValue DESC;
आउटपुट:
+-------+-----------------+
| name | OccurrenceValue |
+-------+-----------------+
| John | 3 |
| Carol | 1 |
| David | 1 |
+-------+-----------------+
विविधताएं
केवल डुप्लिकेट ढूंढें (गिनती > 1)
SELECT name, COUNT(*) AS cnt
FROM DistinctDemo1
GROUP BY name
HAVING COUNT(*) > 1;
प्रतिशत भी दिखाएं
SELECT name,
COUNT(*) AS cnt,
ROUND(COUNT(*) * 100.0 / (SELECT COUNT(*) FROM DistinctDemo1), 2) AS percentage
FROM DistinctDemo1
GROUP BY name
ORDER BY cnt DESC;
एकाधिक कॉलम द्वारा ग्रुप
SELECT name, age, COUNT(*)
FROM users
GROUP BY name, age;
विंडो फंक्शन के साथ (MySQL 8.0+)
SELECT DISTINCT name,
COUNT(*) OVER (PARTITION BY name) AS cnt
FROM DistinctDemo1;
प्रदर्शन टिप्स
GROUP BYकॉलम पर इंडेक्स बनाएं- बड़े टेबल पर
COUNT(*)के बजायCOUNT(1)याCOUNT(pk_column)समान प्रदर्शन WHEREक्लॉज से पहले फ़िल्टर करें, फिर ग्रुप करें