खंड द्वारा एसक्यूएल विभाजन

Khanda Dvara Esakyu Ela Vibhajana



SQL में, PARTITION BY क्लॉज हमें किसी दिए गए क्वेरी के परिणाम सेट को एक या अधिक कॉलम के आधार पर विभिन्न समूहों में विभाजित या विभाजित करने की अनुमति देता है। परिणामी विभाजन काफी उपयोगी हो सकते हैं, खासकर जब आपको प्रत्येक विभाजन (व्यक्तिगत रूप से) की गणना करने या प्रत्येक समूह के भीतर समग्र कार्यों को लागू करने की आवश्यकता होती है।

इस ट्यूटोरियल में, हम SQL में PARTITION BY क्लॉज की कार्यप्रणाली के बारे में जानेंगे और जानेंगे कि हम अधिक विस्तृत उपसमूह के लिए डेटा को विभाजित करने के लिए इसका उपयोग कैसे कर सकते हैं।

वाक्य - विन्यास:

आइए PARTITION BY क्लॉज के सिंटैक्स से शुरुआत करें। वाक्यविन्यास उस संदर्भ पर निर्भर हो सकता है जिसमें आप इसका उपयोग करते हैं लेकिन यहां सामान्य वाक्यविन्यास है:







कॉलम1, कॉलम2, चुनें...

ओवर (विभाजन_स्तंभ1, विभाजन_स्तंभ2, ... द्वारा विभाजन)

तालिका_नाम से

दिया गया सिंटैक्स निम्नलिखित तत्वों का प्रतिनिधित्व करता है:



  1. कॉलम1, कॉलम2 - यह उन कॉलमों को संदर्भित करता है जिन्हें हम परिणाम सेट में शामिल करना चाहते हैं।
  2. कॉलम द्वारा विभाजन - यह खंड परिभाषित करता है कि हम डेटा को कैसे विभाजित या समूहित करना चाहते हैं।

नमूना डेटा

आइए हम नमूना डेटा के साथ एक मूल तालिका बनाएं ताकि यह दर्शाया जा सके कि PARTITION BY क्लॉज का उपयोग कैसे किया जाए। इस उदाहरण के लिए, आइए एक मूल तालिका बनाएं जो उत्पाद जानकारी संग्रहीत करती है।



टेबल उत्पाद बनाएं (
product_id INT प्राथमिक कुंजी AUTO_INCREMENT,
उत्पाद_नाम VARCHAR( 255 ),
श्रेणी वर्चर( 255 ),
मूल्य दशमलव( 10 , 2 ),
मात्रा INT,
समाप्ति तिथि दिनांक,
बारकोड BIGINT
);

डालना
में
उत्पाद (उत्पाद_नाम,
वर्ग,
कीमत,
मात्रा,
समाप्ति तिथि,
बारकोड)
मान ( 'शेफ हैट 25 सेमी' ,
'बेकरी' ,
24.67 ,
57 ,
'2023-09-09' ,
2854509564204 );

डालना
में
उत्पाद (उत्पाद_नाम,
वर्ग,
कीमत,
मात्रा,
समाप्ति तिथि,
बारकोड)
मान ( 'बटेर अंडे - डिब्बाबंद' ,
'पेंट्री' ,
17.99 ,
67 ,
'2023-09-29' ,
1708039594250 );

डालना
में
उत्पाद (उत्पाद_नाम,
वर्ग,
कीमत,
मात्रा,
समाप्ति तिथि,
बारकोड)
मान ( 'कॉफ़ी - एग नॉग कैपुचीनो' ,
'बेकरी' ,
92.53 ,
10 ,
'2023-09-22' ,
8704051853058 );

डालना
में
उत्पाद (उत्पाद_नाम,
वर्ग,
कीमत,
मात्रा,
समाप्ति तिथि,
बारकोड)
मान ( 'नाशपाती - कांटेदार' ,
'बेकरी' ,
65.29 ,
48 ,
'2023-08-23' ,
5174927442238 );

डालना
में
उत्पाद (उत्पाद_नाम,
वर्ग,
कीमत,
मात्रा,
समाप्ति तिथि,
बारकोड)
मान ( 'पास्ता - एंजेल हेयर' ,
'पेंट्री' ,
48.38 ,
59 ,
'2023-08-05' ,
8008123704782 );

डालना
में
उत्पाद (उत्पाद_नाम,
वर्ग,
कीमत,
मात्रा,
समाप्ति तिथि,
बारकोड)
मान ( 'वाइन - प्रोसेको वाल्डोबियाडीन' ,
'उत्पादन करना' ,
44.18 ,
3 ,
'2023-03-13' ,
6470981735653 );

डालना
में
उत्पाद (उत्पाद_नाम,
वर्ग,
कीमत,
मात्रा,
समाप्ति तिथि,
बारकोड)
मान ( 'पेस्ट्री - फ्रेंच मिनी मिश्रित' ,
'पेंट्री' ,
36.73 ,
52 ,
'2023-05-29' ,
5963886298051 );

डालना
में
उत्पाद (उत्पाद_नाम,
वर्ग,
कीमत,
मात्रा,
समाप्ति तिथि,
बारकोड)
मान ( 'नारंगी - डिब्बाबंद, मंदारिन' ,
'उत्पादन करना' ,
65.0 ,
1 ,
'2023-04-20' ,
6131761721332 );

डालना
में
उत्पाद (उत्पाद_नाम,
वर्ग,
कीमत,
मात्रा,
समाप्ति तिथि,
बारकोड)
मान ( 'सूअर के कंधे का मांस' ,
'उत्पादन करना' ,
55.55 ,
73 ,
'2023-05-01' ,
9343592107125 );

डालना
में
उत्पाद (उत्पाद_नाम,
वर्ग,
कीमत,
मात्रा,
समाप्ति तिथि,
बारकोड)
मान ( 'डीसी हिकियाज हीरा हुबा' ,
'उत्पादन करना' ,
56.29 ,
53 ,
'2023-04-14' ,
3354910667072 );

एक बार जब हमारे पास नमूना डेटा सेटअप हो, तो हम आगे बढ़ सकते हैं और PARTITION BY क्लॉज का उपयोग कर सकते हैं।





बुनियादी उपयोग

मान लीजिए कि हम पिछली तालिका में प्रत्येक उत्पाद श्रेणी के लिए कुल आइटम की गणना करना चाहते हैं। हम वस्तुओं को अद्वितीय श्रेणियों में विभाजित करने के लिए PARTITION BY का उपयोग कर सकते हैं और फिर प्रत्येक श्रेणी में कुल मात्रा निर्धारित कर सकते हैं।

एक उदाहरण इस प्रकार है:



चुनना
प्रोडक्ट का नाम,
वर्ग,
मात्रा,
योग(मात्रा) ओवर (श्रेणी के अनुसार विभाजन) कुल_आइटम के रूप में
से
उत्पाद;

ध्यान दें कि दिए गए उदाहरण में, हम 'श्रेणी' कॉलम का उपयोग करके डेटा को विभाजित करते हैं। फिर हम प्रत्येक श्रेणी में कुल आइटम को अलग से निर्धारित करने के लिए SUM() समग्र फ़ंक्शन का उपयोग करते हैं। परिणाम प्रत्येक श्रेणी में कुल आइटम दिखाता है।

खंड द्वारा विभाजन का उपयोग करना

संक्षेप में कहें तो, PARTITION BY क्लॉज का सबसे आम उपयोग विंडो फ़ंक्शंस के साथ संयोजन में होता है। विंडो फ़ंक्शन प्रत्येक विभाजन पर अलग से लागू किया जाता है।

PARTITION BY के साथ उपयोग किए जाने वाले कुछ सामान्य विंडो फ़ंक्शंस में निम्नलिखित शामिल हैं:

  • SUM() - प्रत्येक विभाजन के भीतर एक कॉलम के योग की गणना करें।
  • AVG() - प्रत्येक विभाजन के भीतर एक कॉलम के औसत की गणना करें।
  • COUNT() - प्रत्येक विभाजन के भीतर पंक्तियों की संख्या की गणना करें।
  • ROW_NUMBER() - प्रत्येक विभाजन के भीतर प्रत्येक पंक्ति के लिए एक अद्वितीय पंक्ति संख्या निर्दिष्ट करें।
  • रैंक() - प्रत्येक विभाजन के भीतर प्रत्येक पंक्ति को एक रैंक निर्दिष्ट करें।
  • DENSE_RANK() - प्रत्येक विभाजन के भीतर प्रत्येक पंक्ति को एक सघन रैंक निर्दिष्ट करें।
  • NTILE() - प्रत्येक विभाजन के भीतर डेटा को मात्राओं में विभाजित करें।

इतना ही!

निष्कर्ष

इस ट्यूटोरियल में, हमने सीखा कि डेटा को विभिन्न खंडों में विभाजित करने के लिए SQL में PARTITION BY क्लॉज के साथ कैसे काम किया जाए और फिर प्रत्येक परिणामी विभाजन के लिए अलग से एक विशिष्ट ऑपरेशन लागू किया जाए।