MySQL में COUNT() और GROUP BY से किसी कॉलम में प्रत्येक मान की घटनाएं गिनना
सिंटैक्स:
SELECT yourColumnName, COUNT(*) AS anyVariableName FROM yourTableName GROUP BY yourColumnName;
व्यावहारिक उदाहरण
1. टेबल बनाएं:
mysql> CREATE TABLE CountSameValue (
-> Id INT,
-> Name VARCHAR(100),
-> Marks INT
-> );
Query OK, 0 rows affected (0.70 sec)
2. डेटा डालें (कुछ डुप्लीकेट Marks के साथ):
mysql> INSERT INTO CountSameValue VALUES(1,'Sam',67); mysql> INSERT INTO CountSameValue VALUES(2,'Mike',87); mysql> INSERT INTO CountSameValue VALUES(3,'Carol',67); mysql> INSERT INTO CountSameValue VALUES(4,'Bob',87); mysql> INSERT INTO CountSameValue VALUES(5,'John',71); mysql> INSERT INTO CountSameValue VALUES(6,'Adam',66); mysql> INSERT INTO CountSameValue VALUES(7,'David',71); mysql> INSERT INTO CountSameValue VALUES(8,'Maria',67);
3. सभी रिकॉर्ड:
+------+-------+-------+ | Id | Name | Marks | +------+-------+-------+ | 1 | Sam | 67 | | 2 | Mike | 87 | | 3 | Carol | 67 | | 4 | Bob | 87 | | 5 | John | 71 | | 6 | Adam | 66 | | 7 | David | 71 | | 8 | Maria | 67 | +------+-------+-------+ 8 rows in set (0.00 sec)
4. Marks कॉलम में प्रत्येक मान की गिनती:
mysql> SELECT Marks, COUNT(*) AS Total
-> FROM CountSameValue
-> GROUP BY Marks;
+-------+-------+ | Marks | Total | +-------+-------+ | 67 | 3 | | 87 | 2 | | 71 | 2 | | 66 | 1 | +-------+-------+ 4 rows in set (0.00 sec)
उन्नत विविधताएं:
गिनती के अनुसार सॉर्ट करें (सबसे अधिक बार आने वाला पहले):
SELECT Marks, COUNT(*) AS Total FROM CountSameValue GROUP BY Marks ORDER BY Total DESC;
केवल डुप्लीकेट मान दिखाएं (गिनती > 1):
SELECT Marks, COUNT(*) AS Total FROM CountSameValue GROUP BY Marks HAVING COUNT(*) > 1;
प्रतिशत भी दिखाएं:
SELECT Marks,
COUNT(*) AS Total,
ROUND(COUNT(*) * 100.0 / (SELECT COUNT(*) FROM CountSameValue), 2) AS Percentage
FROM CountSameValue
GROUP BY Marks;
NULL मानों को शामिल/बहिष्कृत करें:
-- NULL गिनें SELECT column, COUNT(*) FROM table GROUP BY column; -- NULL न गिनें (COUNT(column) NULL को अनदेखा करता है) SELECT column, COUNT(column) FROM table GROUP BY column;
प्रदर्शन टिप:
बड़े टेबल पर GROUP BY धीमा हो सकता है। कॉलम पर इंडेक्स बनाएं:
CREATE INDEX idx_marks ON CountSameValue(Marks);