Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में समान तारीख वाले रिकॉर्ड्स का SUM कैसे निकालें?

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)
  1. - MySQL में एकाधिक टेबल्स से रिकॉर्ड इन्सर्ट कैसे करें?

    MySQL में दो या अधिक टेबल्स से डेटा संयोजित करके तीसरी टेबल में इन्सर्ट करने के लिए, INSERT INTO ... SELECT के साथ क्रॉस जॉइन (कॉमा सिंटैक्स) या स्पष्ट JOIN का उपयोग करें। यह कार्टेशियन प्रोडक्ट (सभी संयोजन) या मिलान वाले संयोजन बना सकता है। उदाहरण: Name और Age टेबल से Student टेबल में कार्टेशियन प

  1. - MySQL में GROUP BY और MAX का उपयोग करके समान नाम वाले छात्रों की अधिकतम आयु प्राप्त करें

    MySQL में GROUP BY और MAX() का उपयोग करके प्रति समूह अधिकतम मान खोजना जब आपके पास डुप्लिकेट नाम (या अन्य समूहन कॉलम) हों और आप प्रत्येक समूह के लिए अधिकतम मान खोजना चाहते हैं, तो GROUP BY के साथ MAX() एग्रीगेट फ़ंक्शन का उपयोग करें। टेबल बनाना ); Query OK, 0 rows affected (0.00 sec) डुप्लिकेट नाम

  1. - MySQL में 5 टेबल से 'UP' कॉलम का योग निकालना

    UNION ALL और SUM() के साथ कई टेबल से योग की गणना समान कॉलम नाम UP वाले 5 टेबल से कुल योग निकालने के लिए UNION ALL का उपयोग करें। पहले 5 टेबल बनाएं और डेटा डालें: mysql> create table DemoTable1977 ( UP int ); Query OK, 0 rows affected (0.00 sec) mysql> insert into DemoTable1977 values(10); ...