SUM() और CASE से सशर्त गिनती
COUNT() के बजाय SUM(CASE ...) का उपयोग करके एक ही क्वेरी में कई शर्तों की गिनती की जा सकती है।
तालिका और डेटा
mysql> CREATE TABLE DemoTable1485 (
-> StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> StudentName VARCHAR(20),
-> StudentSubject VARCHAR(20)
-> );
mysql> INSERT INTO DemoTable1485(StudentName, StudentSubject) VALUES
-> ('Chris', 'MySQL'), ('Robert', 'MongoDB'),
-> ('Robert', 'MongoDB'), ('Chris', 'Java');
विषयवार छात्र गिनती
mysql> SELECT StudentSubject,
-> SUM(CASE WHEN StudentName = 'Chris' THEN 1 ELSE 0 END) AS Chris_Count,
-> SUM(CASE WHEN StudentName = 'Robert' THEN 1 ELSE 0 END) AS Robert_Count
-> FROM DemoTable1485
-> GROUP BY StudentSubject;
परिणाम
+----------------+-------------+--------------+
| StudentSubject | Chris_Count | Robert_Count |
+----------------+-------------+--------------+
| MySQL | 1 | 0 |
| MongoDB | 0 | 2 |
| Java | 1 | 0 |
+----------------+-------------+--------------+
लाभ: एक ही पास में कई कंडीशनल काउंट। COUNT(CASE ...) भी काम करता है लेकिन SUM() अधिक सहज है।