एसक्यूएल ग्रुप बाइ (GROUP BY) स्टेटमेंट

एकत्रीकरण फ़ंक्शन (जैसे SUM) GROUP BY व्याकरण को जोड़ने की आवश्यकता होती है。

GROUP BY व्याकरण

GROUP BY व्याकरण एकत्रीकरण फ़ंक्शनों को संयोजित करने के लिए उपयोग किया जाता है, जो एक या अनेक स्तम्भों के आधार पर परिणाम सेट को ग्रुप करता है。

SQL GROUP BY व्याकरण

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name

SQL GROUP BY उदाहरण

हम नीचे दिए "Orders" तालिका को रखते हैं:

O_Id OrderDate OrderPrice Customer
1 2008/12/29 1000 बुश
2 2008/11/23 1600 कार्टर
3 2008/10/05 700 बुश
4 2008/09/28 300 बुश
5 2008/08/06 2000 एडम्स
6 2008/07/21 100 कार्टर

अब, हम चाहते हैं कि हमारे पास प्रत्येक ग्राहक का कुल राशि (कुल आर्डर) लूट जाए।

हम इसके लिए GROUP BY वाक्यांश का उपयोग करना चाहते हैं कि हम ग्राहकों को समूहबद्ध करें。

हम निम्नलिखित SQL वाक्यांश का प्रयोग करते हैं:

SELECT Customer,SUM(OrderPrice) FROM Orders
GROUP BY Customer

परिणाम तालिका इस तरह है:

Customer SUM(OrderPrice)
बुश 2000
कार्टर 1700
एडम्स 2000

बहुत अच्छा, नहीं?

हम देखें अगर GROUP BY को छोड़ दिया जाए तो क्या होगा:

SELECT Customer,SUM(OrderPrice) FROM Orders

परिणाम तालिका इस तरह है:

Customer SUM(OrderPrice)
बुश 5700
कार्टर 5700
बुश 5700
बुश 5700
एडम्स 5700
कार्टर 5700

यह परिणाम तालिका हमारे लिए नहीं है।

तो आउर सिर्फ उपरोक्त SELECT वाक्यांश का प्रयोग क्यों नहीं किया जा सकता? व्याख्या इस प्रकार: उपरोक्त SELECT वाक्यांश दो पद (Customer और SUM(OrderPrice)) निर्दिष्ट करता है।"SUM(OrderPrice)" एक अकेला मूल्य ("OrderPrice" पद का कुल) लौटाता है, जबकि "Customer" 6 मूल्य ("Orders" तालिका के प्रत्येक पंक्ति के लिए) लौटाता है।इसलिए हमें सही परिणाम नहीं मिलता।हालांकि, आपने देखा है, GROUP BY वाक्यांश इस समस्या को हल करता है。

GROUP BY एक से अधिक पद

हम एक से अधिक पदों पर GROUP BY वाक्यांश भी लगा सकते हैं, जैसे कि इस तरह:

SELECT Customer,OrderDate,SUM(OrderPrice) FROM Orders
GROUP BY Customer,OrderDate