GROUP BY DATE() से डेली टोटल निकालना
DATETIME कॉलम में स्टोर्ड रिकॉर्ड्स को केवल डेट भाग (समय छोड़कर) के आधार पर ग्रुप करके न्यूमेरिक कॉलम का योग निकालने के लिए GROUP BY DATE() का उपयोग करें।
टेबल बनाना और डेटा इन्सर्ट करना
CREATE TABLE DemoTable1358 (
PurchaseDate DATETIME,
ProductPrice INT
);
INSERT INTO DemoTable1358 VALUES('2019-09-20 12:34:00', 450);
INSERT INTO DemoTable1358 VALUES('2019-09-21 11:00:00', 1050);
INSERT INTO DemoTable1358 VALUES('2018-09-21 02:10:00', 2050);
INSERT INTO DemoTable1358 VALUES('2019-09-21 05:20:40', 5050);
INSERT INTO DemoTable1358 VALUES('2016-09-21 04:10:56', 1000);
मौजूदा डेटा
+---------------------+--------------+ | PurchaseDate | ProductPrice | +---------------------+--------------+ | 2019-09-20 12:34:00 | 450 | | 2019-09-21 11:00:00 | 1050 | | 2018-09-21 02:10:00 | 2050 | | 2019-09-21 05:20:40 | 5050 | | 2016-09-21 04:10:56 | 1000 | +---------------------+--------------+
क्वेरी: समान डेट के प्राइस का योग
SELECT PurchaseDate, SUM(ProductPrice) FROM DemoTable1358 GROUP BY DATE(PurchaseDate);
आउटपुट
+---------------------+-------------------+ | PurchaseDate | sum(ProductPrice) | +---------------------+-------------------+ | 2019-09-20 12:34:00 | 450 | | 2019-09-21 11:00:00 | 6100 | | 2018-09-21 02:10:00 | 2050 | | 2016-09-21 04:10:56 | 1000 | +---------------------+-------------------+
व्याख्या
DATE(PurchaseDate)- डेटाटाइम से केवल डेट भाग निकालता है (2019-09-21)- 2019-09-21 के दो रिकॉर्ड: 1050 + 5050 = 6100
- प्रत्येक यूनिक डेट के लिए एक रो आउटपुट में
- दिखाया गया PurchaseDate उस ग्रुप का पहला रिकॉर्ड है (नॉन-डिटरमिनिस्टिक)
बेहतर SELECT (केवल डेट दिखाना)
SELECT DATE(PurchaseDate) AS PurchaseDate, SUM(ProductPrice) AS TotalPrice FROM DemoTable1358 GROUP BY DATE(PurchaseDate);
+--------------+------------+ | PurchaseDate | TotalPrice | +--------------+------------+ | 2019-09-20 | 450 | | 2019-09-21 | 6100 | | 2018-09-21 | 2050 | | 2016-09-21 | 1000 | +--------------+------------+
इंडेक्सिंग टिप
CREATE INDEX idx_purchase_date ON DemoTable1358(PurchaseDate);
या फंक्शनल इंडेक्स (MySQL 8.0+):
ALTER TABLE DemoTable1358 ADD INDEX idx_date_only ((DATE(PurchaseDate)));
अन्य टाइम ग्रुपिंग
-- मासिक GROUP BY YEAR(PurchaseDate), MONTH(PurchaseDate) -- या GROUP BY DATE_FORMAT(PurchaseDate, '%Y-%m') -- साप्ताहिक GROUP BY YEARWEEK(PurchaseDate)