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

MySQL-এ CASE স্টেটমেন্ট ব্যবহার করে ধনাত্মক ও ঋণাত্মক মানের পৃথক যোগফল বের করা

একই কলামে ধনাত্মক ও ঋণাত্মক মান থাকলে, CASE স্টেটমেন্ট ব্যবহার করে তাদের পৃথক যোগফল বের করা যায়।

টেবিল তৈরি ও ডেটা ইনসার্ট

mysql> create table DemoTable(
    Id int,
    Value int
);
Query OK, 0 rows affected (0.51 sec)
mysql> insert into DemoTable values(10, 100);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values(10, -110);
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values(10, 200);
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values(10, -678);
Query OK, 1 row affected (0.17 sec)

রেকর্ড দেখানো

mysql> select * from DemoTable;

আউটপুট:

+------+-------+
| Id   | Value |
+------+-------+
| 10   | 100   |
| 10   | -110  |
| 10   | 200   |
| 10   | -678  |
+------+-------+
4 rows in set (0.00 sec)

ধনাত্মক ও ঋণাত্মক যোগফল পৃথক কলামে

mysql> select Id,
    SUM(CASE WHEN Value > 0 THEN Value ELSE 0 END) AS Positive_Value,
    SUM(CASE WHEN Value < 0 THEN Value ELSE 0 END) AS Negative_Value
    from DemoTable
    group by Id;

ফলাফল:

+------+----------------+----------------+
| Id   | Positive_Value | Negative_Value |
+------+----------------+----------------+
| 10   | 300            | -788           |
+------+----------------+----------------+
1 row in set (0.00 sec)

ব্যাখ্যা

  • CASE WHEN Value > 0 THEN Value ELSE 0 END - ধনাত্মক মানগুলো যোগ করে, অন্যদের ০ ধরে।
  • CASE WHEN Value < 0 THEN Value ELSE 0 END - ঋণাত্মক মানগুলো যোগ করে (নেগেটিভ মানের যোগফল নেগেটিভ হবে)।
  • GROUP BY Id - একই আইডির রোগুলো একত্রিত করে।

বিকল্প: শর্তাধীন অ্যাক্টিভেশন

আপনি SUM(Value * (Value > 0)) ও SUM(Value * (Value < 0)) ও ব্যবহার করতে পারেন (MySQL-এ TRUE=1, FALSE=0)।

  1. MySQL-এ তিনটি কলাম থেকে আলাদা মান বের করে একই কলামে প্রদর্শন করা

  2. MySQL CONCAT()으로 여러 컬럼 값을 텍스트와 합쳐 단일 컬럼으로 출력하기

  3. MySQL에서 IS NOT NULL로 NULL 제외하고 NOT NULL 값만 다른 테이블로 복사하기

  4. MySQL-এ SUBSTRING_INDEX() দিয়ে হাইফেন-বিভক্ত স্ট্রিং আলাদা কলামে বির্ভক্ত করা