যদি আপনাকে একই কোয়েরিতে একাধিক শর্তের ভিত্তিতে আলাদা আলাদা কাউন্ট করতে হয়, তবে CASE স্টেটমেন্ট ব্যবহার করে এটা করা যায়।
টেবিল তৈরি এবং ডেটা ইনসার্ট
mysql> CREATE TABLE DemoTable (
-> StudentMarks INT,
-> isValid TINYINT(1)
-> );
Query OK, 0 rows affected (0.68 sec)
mysql> INSERT INTO DemoTable VALUES(45, 0);
mysql> INSERT INTO DemoTable VALUES(78, 1);
mysql> INSERT INTO DemoTable VALUES(45, 1);
mysql> INSERT INTO DemoTable VALUES(78, 1);
mysql> INSERT INTO DemoTable VALUES(45, 0);
mysql> INSERT INTO DemoTable VALUES(82, 1);
mysql> INSERT INTO DemoTable VALUES(62, 1);
সকল রেকর্ড
+--------------+---------+ | StudentMarks | isValid | +--------------+---------+ | 45 | 0 | | 78 | 1 | | 45 | 1 | | 78 | 1 | | 45 | 0 | | 82 | 1 | | 62 | 1 | +--------------+---------+
CASE দিয়ে কন্ডিশনাল কাউন্ট
mysql> SELECT StudentMarks,
-> SUM(CASE
-> WHEN StudentMarks = 45 THEN CASE WHEN isValid = 1 THEN 1 ELSE 0 END
-> ELSE 1
-> END) AS Freq
-> FROM DemoTable
-> GROUP BY StudentMarks;
আউটপুট:
+--------------+------+ | StudentMarks | Freq | +--------------+------+ | 45 | 1 | | 78 | 2 | | 82 | 1 | | 62 | 1 | +--------------+------+
ব্যাখ্যা: যখন StudentMarks = 45 হয়, তখন শুধু isValid = 1 হলে কাউন্ট করা হয়। বাকি সব মার্কসের জন্য সব রো কাউন্ট হয়।