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

หาผลรวมตามเงื่อนไขคอลัมน์ด้วย SUM() และ CASE WHEN ใน MySQL

ใช้ SUM(CASE WHEN ... THEN ... ELSE ... END) เพื่อรวมค่าเฉพาะที่ตรงเงื่อนไข

สร้างตารางและเพิ่มข้อมูล

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), (45, true, 10), (89, true, 50), (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 |
+----+-------+-----------------+------------+

คำนวณ: ลูกค้าที่ถูกต้อง (true) ใช้ Price, ไม่ถูกต้อง (false) ใช้ FinalPrice

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

ผลลัพธ์

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

การคำนวณ: (False→40) + (True→45) + (True→89) + (False→100) = 40+45+89+100 = 274