মাস অনুযায়ী রেকর্ড গ্রুপ করে এগরিগেট (যেমন: SUM) করতে MONTH() বা MONTHNAME() ফাংশন সাথে GROUP BY ব্যবহার করুন।
উদাহরণ দিয়ে বুঝি
টেবিল তৈরি করুন:
mysql> CREATE TABLE SelectPerMonthDemo (
-> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Price INT,
-> PurchaseDate DATETIME
-> );
Query OK, 0 rows affected (2.34 sec)
বিভিন্ন মাসের রেকর্ড ইনসার্ট করুন:
mysql> INSERT INTO SelectPerMonthDemo(Price, PurchaseDate) VALUES(600, DATE_ADD(NOW(), INTERVAL -1 MONTH));
mysql> INSERT INTO SelectPerMonthDemo(Price, PurchaseDate) VALUES(600, DATE_ADD(NOW(), INTERVAL 2 MONTH));
mysql> INSERT INTO SelectPerMonthDemo(Price, PurchaseDate) VALUES(400, NOW());
mysql> INSERT INTO SelectPerMonthDemo(Price, PurchaseDate) VALUES(800, DATE_ADD(NOW(), INTERVAL 3 MONTH));
mysql> INSERT INTO SelectPerMonthDemo(Price, PurchaseDate) VALUES(900, DATE_ADD(NOW(), INTERVAL 4 MONTH));
mysql> INSERT INTO SelectPerMonthDemo(Price, PurchaseDate) VALUES(100, DATE_ADD(NOW(), INTERVAL 4 MONTH));
mysql> INSERT INTO SelectPerMonthDemo(Price, PurchaseDate) VALUES(1200, DATE_ADD(NOW(), INTERVAL -1 MONTH));
সকল রেকর্ড:
mysql> SELECT * FROM SelectPerMonthDemo;
+----+-------+---------------------+
| Id | Price | PurchaseDate |
+----+-------+---------------------+
| 1 | 600 | 2019-01-10 22:39:30 |
| 2 | 600 | 2019-04-10 22:39:47 |
| 3 | 400 | 2019-02-10 22:40:03 |
| 4 | 800 | 2019-05-10 22:40:18 |
| 5 | 900 | 2019-06-10 22:40:29 |
| 6 | 100 | 2019-06-10 22:40:41 |
| 7 | 1200 | 2019-01-10 22:40:50 |
+----+-------+---------------------+
7 rows in set (0.00 sec)
মাসের নাম অনুযায়ী টোটাল প্রাইস (SUM)
mysql> SELECT MONTHNAME(PurchaseDate) AS MONTHNAME, SUM(Price)
-> FROM SelectPerMonthDemo
-> GROUP BY MONTHNAME(PurchaseDate);
+-----------+------------+
| MONTHNAME | SUM(Price) |
+-----------+------------+
| January | 1800 |
| April | 600 |
| February | 400 |
| May | 800 |
| June | 1000 |
+-----------+------------+
5 rows in set (0.07 sec)
মাস নম্বর অনুযায়ী (১-১২)
mysql> SELECT MONTH(PurchaseDate), SUM(Price)
-> FROM SelectPerMonthDemo
-> GROUP BY MONTH(PurchaseDate);
+---------------------+------------+
| MONTH(PurchaseDate) | SUM(Price) |
+---------------------+------------+
| 1 | 1800 |
| 4 | 600 |
| 2 | 400 |
| 5 | 800 |
| 6 | 1000 |
+---------------------+------------+
5 rows in set (0.00 sec)
বAR্ষিক রিপোর্টের জন্য (YEAR + MONTH)
SELECT YEAR(PurchaseDate) AS Year, MONTH(PurchaseDate) AS Month, SUM(Price)
FROM SelectPerMonthDemo
GROUP BY YEAR(PurchaseDate), MONTH(PurchaseDate)
ORDER BY Year, Month;
নোট: MONTHNAME() লোকেল-নির্ভর (ইংরেজি ডিফল্ট)। বাংলা মাসের নামের জন্য অ্যাপ্লিকেশন লেভেলে কনভার্ট করুন।