MySQL-এ সেশন ভেরিয়েবল (@variable) ব্যবহার করে প্রতিটি রোয়ের জন্য সচল যোগফল (running total) ক্যালকুলেট করা যায়।
উদাহরণ: টেবিল তৈরি এবং ডেটা ইনসার্ট
mysql> create table DemoTable809(Price int); Query OK, 0 rows affected (0.53 sec)
mysql> insert into DemoTable809 values(40); Query OK, 1 row affected (0.17 sec) mysql> insert into DemoTable809 values(50); Query OK, 1 row affected (0.14 sec) mysql> insert into DemoTable809 values(60); Query OK, 1 row affected (0.12 sec)
সকল রেকর্ড দেখানো
mysql> select * from DemoTable809;
+-------+ | Price | +-------+ | 40 | | 50 | | 60 | +-------+ 3 rows in set (0.00 sec)
রানিং টোটাল ক্যালকুলেট
mysql> select @currentSum:=@currentSum+Price from DemoTable809;
+--------------------------------+ | @currentSum:=@currentSum+Price | +--------------------------------+ | 40 | | 90 | | 150 | +--------------------------------+ 3 rows in set (0.00 sec)
ব্যাখ্যা
@currentSum- সেশন ভেরিয়েবল, প্রথমে NULL (যাকে ০ মনে করা হয়)@currentSum:=@currentSum+Price- প্রতিটি রোতে বর্তমান Price যোগ করে ভেরিয়েবল আপডেট করে- অর্ডার গুরুত্বপূর্ণ:
ORDER BYদিয়ে সিকোয়েন্স নিশ্চিত করুন
স্ট্রিক্ট অর্ডারিংসহ সংস্করণ
mysql> select @currentSum:=@currentSum+Price as RunningTotal
from DemoTable809
cross join (select @currentSum := 0) as init
order by Price;
মডার্ন পদ্ধতি (MySQL 8.0+): Window Function
mysql> select Price, SUM(Price) OVER (ORDER BY Price) as RunningTotal from DemoTable809;
সুপারিশ: MySQL 8.0+ ব্যবহার করলে উইন্ডো ফাংশন (SUM() OVER()) ব্যবহার করুন — এটি আরও দ্রুত, পঠনযোগ্য এবং স্ট্যান্ডার্ড।