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

MySQL-এ CROSS JOIN এবং সেশন ভেরিয়েবল দিয়ে রানিং টোটাল (সচল যোগফল) হিসাব করা

MySQL-এ CROSS JOIN এবং সেশন ভেরিয়েবল (@variable) ব্যবহার করে প্রতিটি রোয়ের সাথে পূর্বের রোগুলোর যোগফল (running total) ক্যালকুলেট করা যায়।

উদাহরণ: টেবিল তৈরি এবং ডেটা ইনসার্ট

mysql> create table DemoTable(Value int); 
Query OK, 0 rows affected (1.79 sec)
mysql> insert into DemoTable values(50); 
Query OK, 1 row affected (0.24 sec) 
mysql> insert into DemoTable values(20); 
Query OK, 1 row affected (0.68 sec) 
mysql> insert into DemoTable values(30); 
Query OK, 1 row affected (0.18 sec)

সকল রেকর্ড দেখানো

mysql> select * from DemoTable;
+-------+
| Value |
+-------+
| 50    |
| 20    |
| 30    |
+-------+
3 rows in set (0.00 sec)

CROSS JOIN দিয়ে রানিং টোটাল (Value অনুযায়ী সর্টেড)

mysql> select t.Value, 
    (@s := @s + t.Value) as Number 
    from DemoTable t cross join 
    (select @s := 0) p 
    order by t.Value;
+-------+--------+
| Value | Number |
+-------+--------+
| 20    | 20     |
| 30    | 50     |
| 50    | 100    |
+-------+--------+
3 rows in set (0.07 sec)

ব্যাখ্যা

  1. CROSS JOIN (SELECT @s := 0) p - সেশন ভেরিয়েবল @s ০ দিয়ে ইনিশিয়ালাইজ করে
  2. ORDER BY t.Value - মান অনুযায়ী সর্ট করে (২০, ৩০, ৫০)
  3. @s := @s + t.Value - প্রতিটি রোতে বর্তমান Value যোগ করে @s আপডেট করে
  4. Number - আউটপুট কলাম এলিয়াস

মডার্ন পদ্ধতি (MySQL 8.0+): Window Function

SELECT Value, 
       SUM(Value) OVER (ORDER BY Value) as RunningTotal
FROM DemoTable;
+-------+--------------+
| Value | RunningTotal |
+-------+--------------+
| 20    | 20           |
| 30    | 50           |
| 50    | 100          |
+-------+--------------+

তুলনা

পূর্বের রো (Lag) সহ রানিং টোটাল

SELECT Value,
       LAG(Value) OVER (ORDER BY Value) as PrevValue,
       SUM(Value) OVER (ORDER BY Value) as RunningTotal
FROM DemoTable;

সুপারিশ: MySQL 8.0+ ব্যবহার করলে উইন্ডো ফাংশন ব্যবহার করুন — স্ট্যান্ডার্ড, দ্রুত এবং শক্তিশালী।

  1. MySQL-এ একাধিক সারি গুনুন এবং ফলাফল আলাদা কলামে (একক সারি) দেখান

  2. MySQL-এ আলাদা রেকর্ড থেকে গণনা একই সারিতে প্রদর্শন করা

  3. MySQL-এ SUM() এবং FORMAT() কম্বাইন করে ফলাফল ফরম্যাট করা

  4. MySQL-এ LEFT() ফাংশন ব্যবহার করে প্রথম অক্ষর বের করে অন্য কলামে রাখা

কপিরাইট © https://bd.wsxdn.com সমস্ত অধিকার সংরক্ষিত
দিকCROSS JOIN + VariableWindow Function
MySQL ভার্সনসব ভার্সন8.0+
পঠনযোগ্যতাকমউচ্চ
পারফরম্যান্সমাঝারিভালো (অপ্টিমাইজড)
ফিচারসিম্পলPARTITION BY, FRAME ইত্যাদি