हम एक सरल उदाहरण ले सकते हैं।
TableA
निम्नलिखित मूल्यों के साथ नामित तालिका पर विचार करें :
id firstname lastname Mark
-------------------------------------------------------------------
1 arun prasanth 40
2 ann antony 45
3 sruthy abc 41
6 new abc 47
1 arun prasanth 45
1 arun prasanth 49
2 ann antony 49
GROUP BY
एसक्यूएल ग्रुप बीओ क्लॉज का उपयोग कई रिकॉर्ड में डेटा एकत्र करने और एक या अधिक कॉलम द्वारा परिणामों को समूहीकृत करने के लिए एक सेलेक्ट स्टेटमेंट में किया जा सकता है।
अधिक सरल शब्दों में, ग्रुप बाय स्टेटमेंट का उपयोग कुल कार्यों के साथ संयोजन के रूप में किया जाता है ताकि परिणाम-समूह को एक या अधिक स्तंभों से जोड़ा जा सके।
वाक्य - विन्यास:
SELECT expression1, expression2, ... expression_n,
aggregate_function (aggregate_expression)
FROM tables
WHERE conditions
GROUP BY expression1, expression2, ... expression_n;
हम GROUP BY
अपनी तालिका में आवेदन कर सकते हैं :
select SUM(Mark)marksum,firstname from TableA
group by id,firstName
परिणाम:
marksum firstname
----------------
94 ann
134 arun
47 new
41 sruthy
हमारी वास्तविक तालिका में हमारे पास 7 पंक्तियाँ हैं और जब हम लागू करते हैं GROUP BY id
, तो सर्वर परिणाम के आधार पर समूह बनाता हैid
:
सरल शब्दों में:
यहाँ GROUP BY
सामान्य रूप से Sum()
प्रत्येक पंक्ति के लिए उनकी गणना करके और उनकी गणना करके लौटी पंक्तियों की संख्या कम कर दी जाती है ।
PARTITION BY
पार्टिशन BY में जाने से पहले, हम OVER
क्लॉज को देखते हैं:
MSDN परिभाषा के अनुसार:
कभी खंड किसी विंडो या उपयोगकर्ता द्वारा निर्दिष्ट क्वेरी परिणाम सेट में पंक्तियों के सेट को परिभाषित करता है। एक विंडो फ़ंक्शन तब विंडो में प्रत्येक पंक्ति के लिए एक मान की गणना करता है। आप मूविंग एवरेज, कम्युलेटिव एग्रीगेट, रनिंग टोटल, या प्रति समूह एन टॉप एन जैसे कुल मूल्यों की गणना करने के लिए कार्यों के साथ OVER क्लॉज का उपयोग कर सकते हैं।
विभाजन द्वारा दी गई पंक्तियों की संख्या कम नहीं होगी।
हम अपने उदाहरण तालिका में पार्टीशन लागू कर सकते हैं:
SELECT SUM(Mark) OVER (PARTITION BY id) AS marksum, firstname FROM TableA
परिणाम:
marksum firstname
-------------------
134 arun
134 arun
134 arun
94 ann
94 ann
41 sruthy
47 new
परिणामों को देखें - यह पंक्तियों को विभाजित करेगा और GROUP BY के विपरीत सभी पंक्तियों को लौटाएगा ।