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

หาผลรวมค่าสูงสุดในแต่ละแถวระหว่างสองคอลัมน์ใน MySQL

ใช้ CASE WHEN ภายใน SUM() เพื่อเลือกค่าที่มากกว่าในแต่ละแถวแล้วรวมกัน

ตัวอย่างการใช้งาน

1. สร้างตารางและข้อมูล

mysql> create table DemoTable (X int, Y int);
mysql> insert into DemoTable values(20,30), (40,15), (80,85);

2. ข้อมูล

+------+------+
| X    | Y    |
+------+------+
| 20   | 30   |
| 40   | 15   |
| 80   | 85   |
+------+------+

3. Query หาผลรวมค่าสูงสุดแต่ละแถว

mysql> SELECT SUM(CASE WHEN X > Y THEN X ELSE Y END) FROM DemoTable;

ผลลัพธ์

+----------------------------------------+
| SUM(CASE WHEN X > Y THEN X ELSE Y END) |
+----------------------------------------+
| 155                                    |
+----------------------------------------+

คำนวณ: แถว1: max(20,30)=30, แถว2: max(40,15)=40, แถว3: max(80,85)=85 → 30+40+85=155

วิธีอื่น: ใช้ GREATEST() (MySQL)

SELECT SUM(GREATEST(X, Y)) FROM DemoTable;

GREATEST() คืนค่าสูงสุดจากรายการ รองรับหลายคอลัมน์ จัดการ NULL ได้ (คืน NULL หากมี NULL)

กรณีต้องการจัดการ NULL

SELECT SUM(COALESCE(GREATEST(X, Y), 0)) FROM DemoTable;
-- หรือ
SELECT SUM(CASE WHEN X > Y THEN X ELSE Y END) FROM DemoTable;