ฟังก์ชัน SUM() สามารถร่วมกับ IF() เพื่อคำนวณผลรวมเฉพาะแถวที่ตรงเงื่อนไขได้ รูปแบบ:
SELECT SUM(IF(condition, value_if_true, value_if_false)) AS alias FROM yourTableName;
ตัวอย่าง: สรุปยอดขายตามช่องทางชำระเงิน
สร้างตาราง:
mysql> CREATE TABLE SumWithIfCondition (
-> ModeOfPayment VARCHAR(100),
-> Amount INT
-> );
เพิ่มข้อมูล:
mysql> INSERT INTO SumWithIfCondition VALUES ('Offline',10);
mysql> INSERT INTO SumWithIfCondition VALUES ('Online',100);
mysql> INSERT INTO SumWithIfCondition VALUES ('Offline',20);
mysql> INSERT INTO SumWithIfCondition VALUES ('Online',200);
mysql> INSERT INTO SumWithIfCondition VALUES ('Offline',30);
mysql> INSERT INTO SumWithIfCondition VALUES ('Online',300);
แสดงข้อมูลทั้งหมด:
mysql> SELECT * FROM SumWithIfCondition;
ผลลัพธ์:
+---------------+--------+
| ModeOfPayment | Amount |
+---------------+--------+
| Offline | 10 |
| Online | 100 |
| Offline | 20 |
| Online | 200 |
| Offline | 30 |
| Online | 300 |
+---------------+--------+
กรณีที่ 1: ผลรวมเฉพาะ Online
mysql> SELECT SUM(IF(ModeOfPayment = 'Online', Amount, 0)) AS TotalAmount FROM SumWithIfCondition;
ผลลัพธ์: 600 (100+200+300)
กรณีที่ 2: ผลรวมเฉพาะ Offline
mysql> SELECT SUM(IF(ModeOfPayment = 'Offline', Amount, 0)) AS TotalAmount FROM SumWithIfCondition;
ผลลัพธ์: 60 (10+20+30)
เทคนิคเพิ่มเติม: สามารถใช้ CASE WHEN แทน IF() ได้เช่นกัน ซึ่งเป็นมาตรฐาน SQL ANSI และรองรับเงื่อนไขซับซ้อนมากกว่า