เมื่อต้องการหาผลรวม (Sum) ของหลายคอลัมน์พร้อมกัน ให้ใช้ SUM() แยกคอลัมน์ด้วยจุลภาคในคำสั่ง SELECT เดียว
สร้างตารางและข้อมูล
mysql> create table DemoTable (
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
FirstValue int, SecondValue int, ThirdValue int
);
mysql> insert into DemoTable(FirstValue,SecondValue,ThirdValue) values (10,20,30),(60,50,40),(80,90,100),(20,10,0);
ข้อมูลในตาราง
+----+------------+-------------+------------+ | Id | FirstValue | SecondValue | ThirdValue | +----+------------+-------------+------------+ | 1 | 10 | 20 | 30 | | 2 | 60 | 50 | 40 | | 3 | 80 | 90 | 100 | | 4 | 20 | 10 | 0 | +----+------------+-------------+------------+
คำสั่ง SUM หลายคอลัมน์
mysql> select sum(FirstValue), sum(SecondValue), sum(ThirdValue) from DemoTable;
ผลลัพธ์ (ทุกคอลัมน์รวม = 170)
+-----------------+------------------+-----------------+ | sum(FirstValue) | sum(SecondValue) | sum(ThirdValue) | +-----------------+------------------+-----------------+ | 170 | 170 | 170 | +-----------------+------------------+-----------------+
ขยาย: เพิ่ม Alias และ Aggregate อื่น
SELECT
SUM(FirstValue) AS sum_first,
SUM(SecondValue) AS sum_second,
SUM(ThirdValue) AS sum_third,
AVG(FirstValue) AS avg_first,
MIN(FirstValue) AS min_first,
MAX(FirstValue) AS max_first,
COUNT(*) AS row_count
FROM DemoTable;
NULL Handling
- SUM() ข้าม NULL อัตโนมัติ (NULL + 10 = 10)
- ถ้าทุกค่าเป็น NULL → SUM คืน NULL
- ใช้
COALESCE(SUM(col), 0)เพื่อให้ได้ 0
Performance
- Single Pass - MySQL อ่านตารางครั้งเดียว คำนวณ SUM ทุกคอลัมน์พร้อมกัน
- เร็วกว่า SELECT SUM(col1) ... UNION SELECT SUM(col2) ... มาก
- Index ไม่ช่วย SUM โดยตรง (Full Table Scan) แต่ช่วย WHERE
Window Function (MySQL 8.0+) - Running Total
SELECT
Id, FirstValue,
SUM(FirstValue) OVER (ORDER BY Id) AS running_total
FROM DemoTable;