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

MySQL-এ অন্য একটি কলামের প্রতিটি ডISTINCT ভ্যালুর জন্য SUM বের করা

SUM() এগ্রিগেট ফাংশন এবং GROUP BY কমান্ড ব্যবহার করে অন্য একটি কলামের প্রতিটি ডISTINCT ভ্যালুর জন্য যোগফল বের করা যায়। এটি বুঝতে একটি টেবিল তৈরি করা যাক। টেবিল তৈরির কোয়েরি:

mysql> create table SumOfEveryDistinct 
-> ( 
-> Id int not null, 
-> Amount int 
-> ); Query OK, 0 rows affected (0.59 sec)

ইনসার্ট কমান্ড দিয়ে কিছু রেকর্ড ইনসার্ট করা যাক। কোয়েরিটি হলো:

mysql> insert into SumOfEveryDistinct values(10,100); Query OK, 1 row affected (0.19 sec) mysql> insert into SumOfEveryDistinct values(11,200); Query OK, 1 row affected (0.20 sec) mysql> insert into SumOfEveryDistinct values(12,300); Query OK, 1 row affected (0.14 sec) mysql> insert into SumOfEveryDistinct values(10,400); Query OK, 1 row affected (0.20 sec) mysql> insert into SumOfEveryDistinct values(11,500); Query OK, 1 row affected (0.10 sec) mysql> insert into SumOfEveryDistinct values(12,600); Query OK, 1 row affected (0.13 sec) mysql> insert into SumOfEveryDistinct values(10,700); Query OK, 1 row affected (0.10 sec) mysql> insert into SumOfEveryDistinct values(11,800); Query OK, 1 row affected (0.18 sec) mysql> insert into SumOfEveryDistinct values(12,900); Query OK, 1 row affected (0.19 sec)

সিলেক্ট স্টেটমেন্ট দিয়ে সব রেকর্ড দেখানো যাক। কোয়েরিটি হলো:

mysql> select *from SumOfEveryDistinct;

আউটপুট নিচে দেওয়া হলো:

+----+--------+ | Id | Amount | +----+--------+ | 10 |   100 | | 11 |   200 | | 12 |   300 | | 10 |   400 | | 11 |   500 | | 12 |   600 | | 10 |   700 | | 11 | 800 | | 12 | 900 | +----+--------+ 9 rows in set (0.00 sec)

অন্য একটি কলামের প্রতিটি ডISTINCT ভ্যালুর জন্য যোগফল বের করার কোয়েরি নিচে দেওয়া হলো:

mysql> select Id, sum(Amount) as TotalSum from SumOfEveryDistinct 
-> group by Id;

আউটপুট নিচে দেওয়া হলো:

+----+----------+ | Id | TotalSum | +----+----------+ | 10 | 1200 | | 11 | 1500 | | 12 | 1800 | +----+----------+ 3 rows in set (0.00 sec)

ব্যাখ্যা: GROUP BY Id দিয়ে Id কলামের অনন্য (distinct) ভ্যালুগুলো অনুযায়ী গ্রুপ তৈরি হয়েছে। তারপর প্রতিটি গ্রুপের Amount কলামের মানের যোগফল SUM(Amount) দিয়ে বের করা হয়েছে। ফলস্বরূপ Id=10-র জন্য 100+400+700=1200, Id=11-র জন্য 200+500+800=1500, এবং Id=12-র জন্য 300+600+900=1800 পাওয়া গেছে।

  1. MySQL-এ GROUP BY HAVING ব্যবহার করে কলাম অনুযায়ী গ্রুপ করিয়ে যোগফল ফিল্টার করা

  2. MySQL-এ IS NULL ব্যবহার করে NULL মানযুক্ত রেকর্ড বের করা

  3. MySQL কোয়ারি দিয়ে চতুর্থ সর্বোচ্চ মান বের করার পদ্ধতি

  4. MySQL-এ কলামের সর্বোচ্চ মান পেতে সবচেয়ে দ্রুত পদ্ধতি: MAX() বনাম ORDER BY LIMIT