MySQL में COUNT() एग्रीगेट फ़ंक्शन और GROUP BY का उपयोग करके कॉलम में प्रत्येक विशिष्ट मान की आवृत्ति (घटनाओं की संख्या) गिनें।
उदाहरण: टेबल बनाना और डेटा डालना
mysql> CREATE TABLE DemoTable (
-> ProductName VARCHAR(100)
-> );
Query OK, 0 rows affected (0.59 sec)
mysql> INSERT INTO DemoTable VALUES
-> ('Product-1'), ('Product-2'), ('Product-3'), ('Product-3'),
-> ('Product-2'), ('Product-4'), ('Product-5'), ('Product-1');
सभी रिकॉर्ड देखना
mysql> SELECT * FROM DemoTable;
आउटपुट
+-------------+ | ProductName | +-------------+ | Product-1 | | Product-2 | | Product-3 | | Product-3 | | Product-2 | | Product-4 | | Product-5 | | Product-1 | +-------------+ 8 rows in set (0.00 sec)
प्रति उत्पाद गिनती प्राप्त करना
mysql> SELECT ProductName, COUNT(ProductName) AS TotalCount FROM DemoTable GROUP BY ProductName;
आउटपुट
+-------------+------------+ | ProductName | TotalCount | +-------------+------------+ | Product-1 | 2 | | Product-2 | 2 | | Product-3 | 2 | | Product-4 | 1 | | Product-5 | 1 | +-------------+------------+ 5 rows in set (0.05 sec)
मुख्य बिंदु:
GROUP BY ProductName- समान उत्पाद नाम वाली पंक्तियों को समूहित करता हैCOUNT(ProductName)- प्रत्येक समूह में गैर-NULL मान गिनता हैCOUNT(*)- सभी पंक्तियाँ गिनता है (NULL सहित)- परिणाम डिफ़ॉल्ट रूप से GROUP BY कॉलम द्वारा क्रमबद्ध होता है (MySQL 5.7 तक); 8.0+ में क्रम गारंटी नहीं
घटते क्रम में क्रमबद्ध:
SELECT ProductName, COUNT(*) AS TotalCount FROM DemoTable GROUP BY ProductName ORDER BY TotalCount DESC;
केवल डुप्लिकेट (गिनती > 1):
SELECT ProductName, COUNT(*) AS TotalCount FROM DemoTable GROUP BY ProductName HAVING COUNT(*) > 1;