Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में COUNT() और DISTINCT के साथ सिंगल क्वेरी में अलग-अलग आइटम्स काउंट करना

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)4NULL नहीं वाली पंक्तियाँ
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              |
+------------+--------------+----------------+
  1. - MySQL में शर्तों के आधार पर एक ही क्वेरी से अलग-अलग ID सेट करें

    परिचय MySQL में CASE स्टेटमेंट का उपयोग करके शर्तों के आधार पर अलग-अलग मान असाइन किए जा सकते हैं। यह लेख दिखाता है कि कैसे एक ही UPDATE क्वेरी में विभिन्न शर्तों के लिए अलग-अलग ID मान सेट करें। उदाहरण: टेबल बनाना और डेटा डालना ); Query OK, 0 rows affected (1.65 sec) INSERT INTO DemoTable1545 VAL

  1. - MySQL में CASE स्टेटमेंट से एक क्वेरी में कई आइटम की कीमत बढ़ाएं

    MySQL में CASE स्टेटमेंट का उपयोग करके एक ही UPDATE क्वेरी में विभिन्न उत्पादों की कीमतें अलग-अलग प्रतिशत से बढ़ा सकते हैं। उदाहरण: उत्पाद कीमतों को अलग-अलग प्रतिशत से बढ़ाना 1. टेबल बनाएं ); 2. डेटा डालें INSERT INTO DemoTable VALUES(Product-3, 3000); 3. वर्तमान कीमतें देखें SELECT * FROM De

  1. - MySQL में एक ही क्वेरी में एकाधिक रिकॉर्ड कैसे अपडेट करें?

    MySQL में UPDATE स्टेटमेंट में WHERE क्लॉज का उपयोग करके एक ही क्वेरी में एकाधिक कॉलम अपडेट किए जा सकते हैं, लेकिन एकाधिक पंक्तियों को अलग-अलग मानों से अपडेट करने के लिए CASE या एकाधिक क्वेरी की आवश्यकता होती है। उदाहरण: एक पंक्ति, एकाधिक कॉलम तालिका बनाएं: mysql> CREATE TABLE DemoTable ( -&