MySQL-এ SUM() এগ্রিগেট ফাংশন এবং GROUP BY ব্যবহার করে একই IDवाले রোların Price যোগফল বের করা যায়।
উদাহরণ: টেবিল তৈরি এবং ডেটা ইনসার্ট
mysql> create table DemoTable850(
Id int,
Price int
);
Query OK, 0 rows affected (0.54 sec)
mysql> insert into DemoTable850 values(1,90); Query OK, 1 row affected (0.15 sec) mysql> insert into DemoTable850 values(2,100); Query OK, 1 row affected (0.55 sec) mysql> insert into DemoTable850 values(2,50); Query OK, 1 row affected (0.11 sec) mysql> insert into DemoTable850 values(1,80); Query OK, 1 row affected (0.13 sec) mysql> insert into DemoTable850 values(1,60); Query OK, 1 row affected (0.10 sec)
সকল রেকর্ড দেখানো
mysql> select * from DemoTable850;
+------+-------+ | Id | Price | +------+-------+ | 1 | 90 | | 2 | 100 | | 2 | 50 | | 1 | 80 | | 1 | 60 | +------+-------+ 5 rows in set (0.00 sec)
Id=1 वाले রোların Price যোগফল
mysql> select Id, SUM(Price) from DemoTable850 where Id=1;
+------+------------+ | Id | SUM(Price) | +------+------------+ | 1 | 230 | +------+------------+ 1 row in set (0.00 sec)
সব Id-এর জন্য যোগফল (GROUP BY)
mysql> select Id, SUM(Price) as TotalPrice from DemoTable850 group by Id;
+------+------------+ | Id | TotalPrice | +------+------------+ | 1 | 230 | | 2 | 150 | +------+------------+ 2 rows in set (0.00 sec)
HAVING দিয়ে ফিল্টার (যেমন যোগফল > ২০০)
mysql> select Id, SUM(Price) as TotalPrice from DemoTable850 group by Id having SUM(Price) > 200;
+------+------------+ | Id | TotalPrice | +------+------------+ | 1 | 230 | +------+------------+ 1 row in set (0.00 sec)
মূল পয়েন্ট
GROUP BY Id- একই Idवाले রোগুলো গোষ্ঠীভুক্ত করেSUM(Price)- প্রতিটি গোষ্ঠীর Price যোগফলWHERE- গ্রুপিং-এর আগে ফিল্টার (Id=1)HAVING- গ্রুপিং-এর পরে ফিল্টার (SUM > 200)
টিপ: COUNT(*), AVG(Price), MIN(Price), MAX(Price) ইত্যাদি এগ্রিগেট ফাংশনও একসাথে ব্যবহার করা যায়।