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

MySQL-এ মাস অনুযায়ী রেকর্ড ফিল্টার ও সাজানোর পদ্ধতি

মাস অনুযায়ী রেকর্ড গ্রুপ করে এগরিগেট (যেমন: 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() লোকেল-নির্ভর (ইংরেজি ডিফল্ট)। বাংলা মাসের নামের জন্য অ্যাপ্লিকেশন লেভেলে কনভার্ট করুন।

  1. MySQL SELECT কোয়েরি নির্দিষ্ট মাস ও বছরের রেকর্ড রিটার্ন করার জন্য

  2. MySQL-এ কারেন্ট ডেটের দিন ও মাস দিয়ে ডেট রেকর্ড ফিল্টার করা

  3. MySQL-এ কারেন্ট ডেট ও টেবিলের ডেট রেকর্ডের পার্থক্য বের করা

  4. MySQL-এ মাস অনুযায়ী টোটাল বের করা (GROUP BY MONTH)