কম্পিউটার টিউটোরিয়াল

MySQL-এ CASE স্টেটমেন্ট ব্যবহার করে দুটি শর্তে আলাদা আলাদা কাউন্ট করা

যদি আপনাকে একই কোয়েরিতে একাধিক শর্তের ভিত্তিতে আলাদা আলাদা কাউন্ট করতে হয়, তবে 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 হলে কাউন্ট করা হয়। বাকি সব মার্কসের জন্য সব রো কাউন্ট হয়।

  1. MySQL-এ GROUP BY HAVING দিয়ে দুটি নির্দিষ্ট ID-র একই মানবाला রেকর্ড খুঁজে বের করা

  2. MySQL-এ একটি কোয়েরি দিয়ে দুটি টেবিল থেকে ডেটা নির্বাচন করা

  3. MySQL-এ ORDER BY Amount=0, Amount দিয়ে শূন্য মানগুলো শেষে পাঠানো

  4. MySQL-এ একক SELECT কোয়েরিতে দুটি টেবিল থেকে ডেটা ফেচ করা