MySQL में GROUP BY के साथ डुप्लिकेट ID गिनना
GROUP BY और एग्रीगेट फ़ंक्शन का उपयोग करके आप डुप्लिकेट ID की गिनती कर सकते हैं और परिणाम को एक अलग कॉलम में प्रदर्शित कर सकते हैं।
उदाहरण: ग्राहक समीक्षा गिनती
mysql> CREATE TABLE DemoTable1453 (
-> CustomerId INT,
-> CustomerReviewNumber INT
-> );
Query OK, 0 rows affected (0.58 sec)
mysql> INSERT INTO DemoTable1453 VALUES
-> (10,4), (10,4), (11,5), (11,5), (11,5),
-> (13,2), (11,5), (10,4), (13,2);
Query OK, 9 rows affected (0.18 sec)
mysql> SELECT * FROM DemoTable1453;
+------------+----------------------+
| CustomerId | CustomerReviewNumber |
+------------+----------------------+
| 10 | 4 |
| 10 | 4 |
| 11 | 5 |
| 11 | 5 |
| 11 | 5 |
| 13 | 2 |
| 11 | 5 |
| 10 | 4 |
| 13 | 2 |
+------------+----------------------+
9 rows in set (0.00 sec)
अद्वितीय समीक्षा संख्या प्रति ग्राहक गिनना
mysql> SELECT CustomerId, COUNT(DISTINCT CustomerReviewNumber)
-> FROM DemoTable1453
-> GROUP BY CustomerId;
परिणाम
+------------+--------------------------------------+ | CustomerId | count(distinct CustomerReviewNumber) | +------------+--------------------------------------+ | 10 | 1 | | 11 | 1 | | 13 | 1 | +------------+--------------------------------------+ 3 rows in set (0.14 sec)
व्याख्या
- ग्राहक 10: समीक्षा संख्या 4 (3 बार दोहराई गई) → 1 अद्वितीय
- ग्राहक 11: समीक्षा संख्या 5 (4 बार दोहराई गई) → 1 अद्वितीय
- ग्राहक 13: समीक्षा संख्या 2 (2 बार दोहराई गई) → 1 अद्वितीय
विविधताएं
-- कुल पंक्ति गिनती (डुप्लिकेट सहित)
SELECT CustomerId, COUNT(*) AS TotalRows
FROM DemoTable1453
GROUP BY CustomerId;
-- कुल और अद्वितीय दोनों
SELECT CustomerId,
COUNT(*) AS TotalRows,
COUNT(DISTINCT CustomerReviewNumber) AS UniqueReviews
FROM DemoTable1453
GROUP BY CustomerId;
-- HAVING के साथ फ़िल्टर (उदाहरण: 2+ अद्वितीय समीक्षा वाले ग्राहक)
SELECT CustomerId, COUNT(DISTINCT CustomerReviewNumber) AS UniqueReviews
FROM DemoTable1453
GROUP BY CustomerId
HAVING UniqueReviews >= 2;
प्रदर्शन टिप
(CustomerId, CustomerReviewNumber) पर एक संयुक्त इंडेक्स इस क्वेरी को तेज़ करता है।