ใช้ฟังก์ชันหน้าต่าง SUM() OVER (ORDER BY ...) เพื่อคำนวณผลรวมสะสมตามลำดับที่กำหนด
สร้างตารางตัวอย่าง
mysql> CREATE TABLE DemoTable (
CustomerId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
CustomerValue INT
);
เพิ่มข้อมูล
mysql> INSERT INTO DemoTable(CustomerValue) VALUES (10);
mysql> INSERT INTO DemoTable(CustomerValue) VALUES (20);
mysql> INSERT INTO DemoTable(CustomerValue) VALUES (30);
mysql> INSERT INTO DemoTable(CustomerValue) VALUES (40);
ดูข้อมูลทั้งหมด
mysql> SELECT * FROM DemoTable;
+------------+---------------+
| CustomerId | CustomerValue |
+------------+---------------+
| 1 | 10 |
| 2 | 20 |
| 3 | 30 |
| 4 | 40 |
+------------+---------------+
คำสั่งคำนวณผลรวมสะสมตาม CustomerId
mysql> SELECT CustomerId,
-> SUM(CustomerValue) OVER (ORDER BY CustomerId) AS SpecificSum
-> FROM DemoTable;
ผลลัพธ์
+------------+-------------+
| CustomerId | SpecificSum |
+------------+-------------+
| 1 | 10 |
| 2 | 30 |
| 3 | 60 |
| 4 | 100 |
+------------+-------------+
คำอธิบาย: แถวที่ 1 = 10, แถวที่ 2 = 10+20=30, แถวที่ 3 = 30+30=60, แถวที่ 4 = 60+40=100
ต้องใช้ MySQL 8.0+ ที่รองรับ Window Functions