কম্পিউটার টিউটোরিয়াল

MySQL-এ সেশন ভেরিয়েবল দিয়ে রানিং টোটাল (cumulative sum) হিসাব করা

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()) ব্যবহার করুন — এটি আরও দ্রুত, পঠনযোগ্য এবং স্ট্যান্ডার্ড।

  1. MySQL SELECT 1 ব্যবহার করে ভ্যালু এক্সিস্ট করে কিনা চেক করার পদ্ধতি

  2. MySQL-এ শর্তসাপেক্ষে কলামের যোগফল (SUM) বের করা

  3. MySQL에서 GROUP BY로 그룹핑하며 합계 구하기

  4. MySQL-এ ভ্যালু ০ হলে অন্য কলাম থেকে ডেটা সিলেক্ট করা