MySQL 8.0+ এ SUM() OVER() উইন্ডো ফাংশন ব্যবহার করে একটি কলামের মান ক্রমাগত যোগ করে রানিং টোটাল (running total) বা ক্যুমুলেটিভ সমষ্টি বের করা যায়।
টেবিল তৈরি এবং ডেটা ইনসার্ট
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 |
+------------+---------------+
রানিং টোটাল ক্যালকুলেট
mysql> SELECT CustomerId,
-> SUM(CustomerValue) OVER (ORDER BY CustomerId) AS SpecificSum
-> FROM DemoTable;
ফলাফল
+------------+-------------+
| CustomerId | SpecificSum |
+------------+-------------+
| 1 | 10 |
| 2 | 30 |
| 3 | 60 |
| 4 | 100 |
+------------+-------------+
ব্যাখ্যা:
- ১ম রো: ১০
- ২য় রো: ১০ + ২০ = ৩০
- ৩য় রো: ১০ + ২০ + ৩০ = ৬০
- ৪র্থ রো: ১০ + ২০ + ৩০ + ৪০ = ১০০
OVER (ORDER BY CustomerId) ক্লজটি নির্দেশ করে যে CustomerId অনুযায়ী ক্রমানুসারে যোগ করা হবে।