COUNT(DISTINCT ...) के साथ यूनिक आइटम्स गिनना
किसी विशिष्ट ग्रुप (जैसे ग्राहक) के लिए अलग-अलग प्रोडक्ट्स की संख्या गिनने के लिए COUNT() के साथ DISTINCT का उपयोग करें।
आइए पहले एक टेबल बनाते हैं:
mysql> CREATE TABLE DemoTable (
CustomerId INT,
CustomerName VARCHAR(20),
ProductName VARCHAR(40)
);
रिकॉर्ड्स इन्सर्ट करें:
mysql> INSERT INTO DemoTable VALUES (101, 'Chris', 'Product-1'); mysql> INSERT INTO DemoTable VALUES (102, 'David', 'Product-2'); mysql> INSERT INTO DemoTable VALUES (101, 'Chris', 'Product-1'); mysql> INSERT INTO DemoTable VALUES (101, 'Chris', 'Product-2'); mysql> INSERT INTO DemoTable VALUES (101, 'Chris', 'Product-1');
सभी रिकॉर्ड्स देखें:
mysql> SELECT * FROM DemoTable;
आउटपुट:
+------------+--------------+-------------+ | CustomerId | CustomerName | ProductName | +------------+--------------+-------------+ | 101 | Chris | Product-1 | | 102 | David | Product-2 | | 101 | Chris | Product-1 | | 101 | Chris | Product-2 | | 101 | Chris | Product-1 | +------------+--------------+-------------+
CustomerId = 101 (Chris) के लिए डिस्टिंक्ट प्रोडक्ट्स काउंट करने के लिए क्वेरी:
mysql> SELECT COUNT(DISTINCT ProductName) FROM DemoTable WHERE CustomerId = 101;
आउटपुट:
+-----------------------------+ | COUNT(DISTINCT ProductName) | +-----------------------------+ | 2 | +-----------------------------+
व्याख्या:
- WHERE CustomerId = 101: केवल Chris के रिकॉर्ड्स फ़िल्टर करता है (4 पंक्तियाँ)
- DISTINCT ProductName: डुप्लिकेट प्रोडक्ट नाम हटाता है (Product-1 तीन बार, Product-2 एक बार)
- COUNT(...): अनोखे प्रोडक्ट्स गिनता है = 2 (Product-1, Product-2)
COUNT(*) vs COUNT(DISTINCT):
| क्वेरी | परिणाम | व्याख्या |
|---|---|---|
| COUNT(*) | 4 | सभी पंक्तियाँ (डुप्लिकेट सहित) |
| COUNT(ProductName) | 4 | NULL नहीं वाली पंक्तियाँ |
| COUNT(DISTINCT ProductName) | 2 | अनोखे प्रोडक्ट नाम |
सभी ग्राहकों के लिए:
SELECT CustomerId, CustomerName, COUNT(DISTINCT ProductName) AS UniqueProducts FROM DemoTable GROUP BY CustomerId, CustomerName;
आउटपुट:
+------------+--------------+----------------+ | CustomerId | CustomerName | UniqueProducts | +------------+--------------+----------------+ | 101 | Chris | 2 | | 102 | David | 1 | +------------+--------------+----------------+