คำนวณค่าสะสม (Running Total) ใน MySQL
ใช้ User-defined Variable เพื่อคำนวณ Running Sum โดยไม่ต้องใช้ Window Function (รองรับ MySQL 8.0+)
สร้างตารางและข้อมูล
CREATE TABLE accumulatedDemo (Value INT); INSERT INTO accumulatedDemo VALUES (10), (15), (20), (25), (45);
คำสั่ง SQL
SET @previousSum = 0; SELECT Value, @previousSum := @previousSum + Value AS AccumulatedColumn FROM accumulatedDemo;
ผลลัพธ์
+-------+-------------------+ | Value | AccumulatedColumn | +-------+-------------------+ | 10 | 10 | | 15 | 25 | | 20 | 45 | | 25 | 70 | | 45 | 115 | +-------+-------------------+
MySQL 8.0+ ใช้ Window Function
SELECT Value, SUM(Value) OVER (ORDER BY Id) AS AccumulatedColumn FROM accumulatedDemo;
ข้อดีของ Window Function
- มาตรฐาน ANSI SQL
- ไม่ต้องใช้ Variable
- รองรับ PARTITION BY ได้
- ประสิทธิภาพดีกว่า