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

MySQL-এ শর্তসাপেক্ষে SUM() - CASE স্টেটমেন্ট দিয়ে ফিল্ড ভ্যালু বেসড যোগফল

MySQL-এ কোনো ফিল্ডের ভ্যালুর উপর ভিত্তি করে ভিন্ন ভিন্ন কলামের যোগফল বের করতে SUM() এবং CASE স্টেটমেন্ট একসাথে ব্যবহার করা হয়।

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

mysql> CREATE TABLE DemoTable (
    -> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> Price INT,
    -> isValidCustomer BOOLEAN,
    -> FinalPrice INT
    -> );
mysql> INSERT INTO DemoTable(Price, isValidCustomer, FinalPrice) VALUES(20, FALSE, 40);
mysql> INSERT INTO DemoTable(Price, isValidCustomer, FinalPrice) VALUES(45, TRUE, 10);
mysql> INSERT INTO DemoTable(Price, isValidCustomer, FinalPrice) VALUES(89, TRUE, 50);
mysql> INSERT INTO DemoTable(Price, isValidCustomer, FinalPrice) VALUES(200, FALSE, 100);

সব রেকর্ড দেখুন

mysql> SELECT * FROM DemoTable;
+----+-------+-----------------+------------+
| Id | Price | isValidCustomer | FinalPrice |
+----+-------+-----------------+------------+
|  1 |    20 |               0 |         40 |
|  2 |    45 |               1 |         10 |
|  3 |    89 |               1 |         50 |
|  4 |   200 |               0 |        100 |
+----+-------+-----------------+------------+

শর্তসাপেক্ষে সমষ্টি: isValidCustomer=true হলে Price, false হলে FinalPrice

mysql> SELECT SUM(
    ->     CASE WHEN isValidCustomer = TRUE THEN Price ELSE FinalPrice END
    -> ) AS TotalPrice FROM DemoTable;

ফলাফল

+------------+
| TotalPrice |
+------------+
|        274 |
+------------+

গণনা:

  • Id=1: isValidCustomer=FALSE → FinalPrice=40
  • Id=2: isValidCustomer=TRUE → Price=45
  • Id=3: isValidCustomer=TRUE → Price=89
  • Id=4: isValidCustomer=FALSE → FinalPrice=100
  • মোট: 40 + 45 + 89 + 100 = 274

আরও জটিল উদাহরণ

SELECT 
    SUM(CASE WHEN status = 'paid' THEN amount ELSE 0 END) AS paid_total,
    SUM(CASE WHEN status = 'pending' THEN amount ELSE 0 END) AS pending_total,
    SUM(CASE WHEN status = 'cancelled' THEN amount ELSE 0 END) AS cancelled_total
FROM orders;

এই পদ্ধতিতে একই কোয়েরিতে একাধিক কন্ডিশনাল সমষ্টি বের করা যায়।

  1. MySQL-এ IS NULL ব্যবহার করে NULL মান যুক্ত কলাম আপডেট করা

  2. MySQL-এ ইউজার-ডিফাইনড ভেরিয়েবল দিয়ে দুটি কলামের মান সোয়াপ করা

  3. শর্ত অনুযায়ী MySQL-এ কলামের SUM করা

  4. MySQL-এ ইউজার-ডিফাইনড ভেরিয়েবল ব্যবহার করে এক কলাম থেকে অন্য কলামের মান ডিরাইভ করা (রানিং টোটাল)