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 | +--------------+-------------+
व्याख्या:
- GROUP BY CustomerName: रिकॉर्ड्स को ग्राहक नाम के अनुसार समूहित करता है
- SUM(ProductPrice): प्रत्येक ग्राहक के लिए कुल कीमत निकालता है:
- Chris: 600 + 980 + 400 = 1980
- David: 450 + 1200 = 1650
- Mike: 1200
- HAVING SUM(ProductPrice) BETWEEN 1600 AND 2000: केवल उन्हीं ग्रुप्स को रखता है जिनका योग 1600 से 2000 के बीच है (Mike 1200 के कारण बाहर हो जाता है)
- ORDER BY CustomerName DESC: परिणाम को ग्राहक नाम के डिसेंडिंग ऑर्डर में सॉर्ट करता है
महत्वपूर्ण: HAVING क्लॉज GROUP BY के बाद लागू होता है और एग्रीगेट फंक्शन्स पर फ़िल्टर कर सकता है, जबकि WHERE क्लॉज ग्रुपिंग से पहले लागू होता है और एग्रीगेट फंक्शन्स का उपयोग नहीं कर सकता।