Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

ใช้ SUM() ร่วมกับเงื่อนไข IF ใน MySQL

ฟังก์ชัน 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 และรองรับเงื่อนไขซับซ้อนมากกว่า