COUNT() और GROUP BY का उपयोग
किसी कॉलम के प्रत्येक विशिष्ट मान की घटनाओं को गिनने के लिए COUNT() एग्रीगेट फंक्शन के साथ GROUP BY का उपयोग करें।
उदाहरण: टेबल बनाना और डेटा इन्सर्ट करना
mysql> CREATE TABLE DemoTable841(
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
Value VARCHAR(100)
);
Query OK, 0 rows affected (0.67 sec)
रिकॉर्ड्स इन्सर्ट करना
mysql> INSERT INTO DemoTable841(Value) VALUES
('X'),('Y'),('Y'),('Z'),('X'),('Z');
Query OK, 6 rows affected (...)
सभी रिकॉर्ड्स देखना
mysql> SELECT * FROM DemoTable841;
+----+-------+ | Id | Value | +----+-------+ | 1 | X | | 2 | Y | | 3 | Y | | 4 | Z | | 5 | X | | 6 | Z | +----+-------+ 6 rows in set (0.00 sec)
मान के अनुसार गिनती क्वेरी
mysql> SELECT Value, CONCAT(COUNT(Value), ' Times') FROM DemoTable841 GROUP BY Value;
परिणाम
+-------+-------------------------------+ | Value | CONCAT(COUNT(Value), ' Times') | +-------+-------------------------------+ | X | 2 Times | | Y | 2 Times | | Z | 2 Times | +-------+-------------------------------+ 3 rows in set (0.04 sec)
क्वेरी व्याख्या
GROUP BY Value- समान मान वाली पंक्तियों को ग्रुप करता हैCOUNT(Value)- प्रत्येक ग्रुप में गैर-NULL मान गिनता हैCONCAT()- गिनती के साथ " Times" टेक्स्ट जोड़ता है
विविधताएं
सभी कॉलम्स के साथ (किसी भी कॉलम पर GROUP BY)
SELECT Value, COUNT(*) AS Count FROM DemoTable841 GROUP BY Value;
क्रमबद्ध परिणाम
SELECT Value, COUNT(*) AS Count FROM DemoTable841 GROUP BY Value ORDER BY Count DESC;
केवल डुप्लिकेट्स (गिनती > 1)
SELECT Value, COUNT(*) AS Count FROM DemoTable841 GROUP BY Value HAVING COUNT(*) > 1;
NULL मानों की गिनती
SELECT COUNT(*) - COUNT(Value) AS NullCount FROM DemoTable841; -- या SELECT COUNT(*) FROM DemoTable841 WHERE Value IS NULL;
COUNT(*) vs COUNT(कॉलम)
| फंक्शन | गिनता है |
|---|---|
COUNT(*) | सभी पंक्तियां (NULL सहित) |
COUNT(column) | केवल गैर-NULL मान |
COUNT(DISTINCT column) | अद्वितीय गैर-NULL मान |
विंडो फंक्शन (MySQL 8.0+)
SELECT Value,
COUNT(*) OVER (PARTITION BY Value) AS Count
FROM DemoTable841;