CASE WHEN ... THEN ... ELSE ... END внутри SUM()
একই কুয়েরিতে একাধিক শর্ত অনুযায়ী গণনা করে আলাদা আলাদা কলামে দেখাতে SUM(CASE WHEN condition THEN 1 ELSE 0 END) প্যাটার্ন ব্যবহার করুন।
উদাহরণ
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 * FROM DemoTable1485;
কুয়েরি: বিষয় অনুযায়ী ছাত্র গণনা
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 |
+----------------+-------------+--------------+
ব্যাখ্যা: এটি পিভট টেবিল (Pivot Table) বা ক্রস-ট্যাবুলেশন তৈরি করার সহজ পদ্ধতি। MySQL 8.0+ তে COUNT(*) FILTER (WHERE ...) সিনট্যাক্সও ব্যবহার করা যায় (অন্য ডিবিতে)।