तिथि से महीना निकालना और डुप्लिकेट तिथियों का योग करना
MySQL में DATE_FORMAT() फ़ंक्शन का उपयोग करके आप तिथि से महीना (या कोई भी प्रारूप) निकाल सकते हैं, और फिर GROUP BY के साथ डुप्लिकेट तिथियों/महीनों के लिए योग गणना कर सकते हैं।
टेबल बनाना
mysql> CREATE TABLE DemoTable (
-> PurchaseDate DATE,
-> Amount INT
-> );
Query OK, 0 rows affected (0.52 sec)
डेटा डालना (डुप्लिकेट तिथियों के साथ)
mysql> INSERT INTO DemoTable VALUES ('2019-10-12', 500);
Query OK, 1 row affected (0.12 sec)
mysql> INSERT INTO DemoTable VALUES ('2018-10-12', 1000);
Query OK, 1 row affected (0.17 sec)
mysql> INSERT INTO DemoTable VALUES ('2019-01-10', 600);
Query OK, 1 row affected (0.12 sec)
mysql> INSERT INTO DemoTable VALUES ('2018-10-12', 600); -- डुप्लिकेट तिथि
Query OK, 1 row affected (0.15 sec)
mysql> INSERT INTO DemoTable VALUES ('2018-11-10', 800);
Query OK, 1 row affected (0.18 sec)
सभी रिकॉर्ड्स देखना
mysql> SELECT * FROM DemoTable;
+--------------+--------+
| PurchaseDate | Amount |
+--------------+--------+
| 2019-10-12 | 500 |
| 2018-10-12 | 1000 |
| 2019-01-10 | 600 |
| 2018-10-12 | 600 | -- डुप्लिकेट तिथि
| 2018-11-10 | 800 |
+--------------+--------+
5 rows in set (0.00 sec)
महीना निकालकर और वर्ष-महीना के अनुसार समूहित करके योग गणना
mysql> SELECT SUM(Amount) AS Amount,
-> DATE_FORMAT(PurchaseDate, '%b') AS Month
-> FROM DemoTable
-> GROUP BY DATE_FORMAT(PurchaseDate, '%Y-%m');
परिणाम
+--------+-------+
| Amount | Month |
+--------+-------+
| 500 | Oct |
| 1600 | Oct | -- 2018-10-12 के दो रिकॉर्ड्स: 1000 + 600
| 600 | Jan |
| 800 | Nov |
+--------+-------+
4 rows in set (0.00 sec)
महत्वपूर्ण बिंदु
- GROUP BY DATE_FORMAT(PurchaseDate, '%Y-%m'): वर्ष-महीना संयोजन द्वारा समूहित करता है (सिर्फ महीना नहीं, ताकि अलग-अलग वर्षों के समान महीने अलग रहें)
- DATE_FORMAT(PurchaseDate, '%b'): संक्षिप्त महीना नाम लौटाता है (Jan, Feb, Mar, आदि)
- SUM(Amount): प्रत्येक समूह के लिए राशि का योग
DATE_FORMAT प्रारूप निर्देशक
| निर्देशक | विवरण | उदाहरण |
|---|---|---|
| %b | संक्षिप्त महीना नाम | Jan, Feb, Mar |
| %M | पूर्ण महीना नाम | January, February |
| %m | महीना संख्या (00-12) | 01, 12 |
| %Y | 4-अंकीय वर्ष | 2024 |
| %y | 2-अंकीय वर्ष | 24 |
| %d | महीने का दिन (00-31) | 15 |
सुधारित क्वेरी (अधिक जानकारी के साथ)
SELECT
DATE_FORMAT(PurchaseDate, '%Y-%m') AS YearMonth,
DATE_FORMAT(PurchaseDate, '%M %Y') AS MonthYear,
COUNT(*) AS TransactionCount,
SUM(Amount) AS TotalAmount,
AVG(Amount) AS AvgAmount,
MIN(Amount) AS MinAmount,
MAX(Amount) AS MaxAmount
FROM DemoTable
GROUP BY DATE_FORMAT(PurchaseDate, '%Y-%m')
ORDER BY YearMonth DESC;
सामान्य गलती से बचें
-- गलत: केवल महीना द्वारा समूहित करना (वर्षों को मिला देगा)
GROUP BY DATE_FORMAT(PurchaseDate, '%m')
-- सही: वर्ष-महीना द्वारा समूहित करना
GROUP BY DATE_FORMAT(PurchaseDate, '%Y-%m')
-- या बेहतर:
GROUP BY YEAR(PurchaseDate), MONTH(PurchaseDate)