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

MySQL में GROUP BY, HAVING और ORDER BY का उपयोग करके विशिष्ट रेंज में SUM वाले रिकॉर्ड्स कैसे प्रदर्शित करें

GROUP BY, HAVING और ORDER BY को मिलाकर रेंज फ़िल्टरिंग

आइए पहले एक टेबल बनाते हैं:

mysql> CREATE TABLE DemoTable (
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    CustomerName VARCHAR(20),
    ProductPrice INT
);

रिकॉर्ड्स इन्सर्ट करें:

mysql> INSERT INTO DemoTable (CustomerName, ProductPrice) VALUES ('Chris', 600);
mysql> INSERT INTO DemoTable (CustomerName, ProductPrice) VALUES ('David', 450);
mysql> INSERT INTO DemoTable (CustomerName, ProductPrice) VALUES ('Chris', 980);
mysql> INSERT INTO DemoTable (CustomerName, ProductPrice) VALUES ('Mike', 1200);
mysql> INSERT INTO DemoTable (CustomerName, ProductPrice) VALUES ('Chris', 400);
mysql> INSERT INTO DemoTable (CustomerName, ProductPrice) VALUES ('David', 1200);

सभी रिकॉर्ड्स देखें:

mysql> SELECT * FROM DemoTable;

आउटपुट:

+----+--------------+--------------+
| Id | CustomerName | ProductPrice |
+----+--------------+--------------+
| 1  | Chris        | 600          |
| 2  | David        | 450          |
| 3  | Chris        | 980          |
| 4  | Mike         | 1200         |
| 5  | Chris        | 400          |
| 6  | David        | 1200         |
+----+--------------+--------------+

1600 और 2000 के बीच कुल कीमत वाले ग्राहकों को प्रदर्शित करने के लिए क्वेरी:

mysql> SELECT CustomerName, SUM(ProductPrice) AS Total_Price
    FROM DemoTable
    GROUP BY CustomerName
    HAVING SUM(ProductPrice) BETWEEN 1600 AND 2000
    ORDER BY CustomerName DESC;

आउटपुट:

+--------------+-------------+
| CustomerName | Total_Price |
+--------------+-------------+
| David        | 1650        |
| Chris        | 1980        |
+--------------+-------------+

व्याख्या:

  1. GROUP BY CustomerName: रिकॉर्ड्स को ग्राहक नाम के अनुसार समूहित करता है
  2. SUM(ProductPrice): प्रत्येक ग्राहक के लिए कुल कीमत निकालता है:
    • Chris: 600 + 980 + 400 = 1980
    • David: 450 + 1200 = 1650
    • Mike: 1200
  3. HAVING SUM(ProductPrice) BETWEEN 1600 AND 2000: केवल उन्हीं ग्रुप्स को रखता है जिनका योग 1600 से 2000 के बीच है (Mike 1200 के कारण बाहर हो जाता है)
  4. ORDER BY CustomerName DESC: परिणाम को ग्राहक नाम के डिसेंडिंग ऑर्डर में सॉर्ट करता है

महत्वपूर्ण: HAVING क्लॉज GROUP BY के बाद लागू होता है और एग्रीगेट फंक्शन्स पर फ़िल्टर कर सकता है, जबकि WHERE क्लॉज ग्रुपिंग से पहले लागू होता है और एग्रीगेट फंक्शन्स का उपयोग नहीं कर सकता।

  1. - MySQL में GROUP BY और COUNT का उपयोग करके डुप्लिकेट रिकॉर्ड्स समूहित करें और अधिकतम मान प्रदर्शित करें

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

  1. - MySQL में एक फ़ील्ड द्वारा ऑर्डर करें और बाकी रिकॉर्ड्स को उसी क्रम में प्रदर्शित करें

    MySQL में विशिष्ट रिकॉर्ड को प्राथमिकता देकर ऑर्डर करना कभी-कभी आप एक विशिष्ट रिकॉर्ड को शीर्ष पर रखना चाहते हैं जबकि बाकी रिकॉर्ड्स अपने मूल क्रम में रहें। MySQL में बूलियन अभिव्यक्ति (Id = 101) का उपयोग करके ORDER BY में यह प्राप्त किया जा सकता है। टेबल बनाना ); Query OK, 0 rows affected (0.82 s

  1. - MySQL में AND और OR ऑपरेटर के साथ विशिष्ट रिकॉर्ड कैसे प्राप्त करें

    उदाहरण टेबल बनाएं: ); डेटा डालें: INSERT INTO DemoTable2015 VALUES (4, Robert, US); क्वेरी StudentName=David OR (StudentCountryName=UK AND StudentId=3): WHERE StudentName = David OR StudentCountryName = UK AND StudentId = 3; परिणाम +-----------+-------------+--------------------+ | Stu