एसक्यूएल ओवर क्लॉज

Esakyu Ela Ovara Kloja



SQL की सबसे उन्नत सुविधाओं में से एक OVER क्लॉज है। यह एक ऐसी सुविधा है जो हमें गणना करने और किसी दिए गए परिणाम सेट के भीतर पंक्तियों के एक विशिष्ट उपसमूह पर SQL विंडो फ़ंक्शंस लागू करने की अनुमति देती है।

यह विशेष रूप से तब उपयोगी होता है जब आपको संपूर्ण परिणाम सेट को ध्वस्त किए बिना पंक्तियों के समूहों के लिए एकत्रीकरण या रैंकिंग की गणना करने की आवश्यकता होती है।

इस ट्यूटोरियल में हमारे साथ जुड़ें क्योंकि हम ओवर क्लॉज के साथ काम शुरू करने के लिए आपको जो कुछ जानने की जरूरत है उसके बारे में सब कुछ सीखते हैं।







आवश्यकताएं:

इससे पहले कि हम OVER क्लॉज की कार्यक्षमता और कामकाज में उतरें, सुनिश्चित करें कि आपके पास SQL ​​की मूल बातें हैं। हम यह भी मानते हैं कि आपके पास एक डेटाबेस तक पहुंच है जिसका उपयोग आप अपने ज्ञान का परीक्षण करने के लिए कर सकते हैं।



हमारे मामले में, हम सकीला नमूना डेटाबेस के साथ MySQL डेटाबेस का उपयोग करेंगे। बस सुनिश्चित करें कि आपके पास पर्याप्त अनुमतियाँ हैं और आपका डेटाबेस इंजन विंडो फ़ंक्शंस का समर्थन करता है।



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

जैसा कि हमने पहले उल्लेख किया है, ज्यादातर मामलों में, हम मुख्य रूप से विंडो फ़ंक्शंस के साथ ओवर क्लॉज़ का उपयोग करते हैं।





इस प्रकार, हम उपवाक्य के वाक्य-विन्यास को इस प्रकार व्यक्त कर सकते हैं:

<विंडो फ़ंक्शन>(अभिव्यक्ति) ओवर (

[विभाजन_अभिव्यक्ति द्वारा विभाजन, ...]

[सॉर्ट_एक्सप्रेशन द्वारा ऑर्डर करें [एएससी | डीईएससी], ...]

[फ़्रेम_विनिर्देश]

)

दिए गए सिंटैक्स में, हम प्रत्येक घटक को इस प्रकार विभाजित कर सकते हैं:



  1. - यह उस विंडो फ़ंक्शन को संदर्भित करता है जिसे हम पंक्तियों की एक विशिष्ट विंडो जैसे SUM(), AVG(), ROW_NUMBER(), RANK, आदि पर लागू करना चाहते हैं।
  2. अभिव्यक्ति - यह एक कॉलम या अभिव्यक्ति निर्दिष्ट करता है जिसके लिए विंडो फ़ंक्शन लागू किया जाता है।
  3. विभाजन द्वारा - यह एक वैकल्पिक खंड है जो परिणाम सेट को विभाजनों में विभाजित करता है जहां प्रत्येक विभाजन एक अलग इकाई की तरह होता है जहां फ़ंक्शन लागू होता है। समान विभाजन के भीतर पंक्तियाँ निर्दिष्ट कॉलम में समान मान साझा करती हैं।
  4. ORDER BY - यह उस क्रम को निर्दिष्ट करता है जिसमें प्रत्येक विभाजन में पंक्तियों को संसाधित किया जाता है।
  5. फ्रेम_स्पेसिफिकेशन - यह एक वैकल्पिक खंड है जो विभाजन के भीतर पंक्तियों के फ्रेम को परिभाषित करता है। सामान्य फ़्रेम विनिर्देशों में <प्रारंभ> और <अंत> के बीच की पंक्तियाँ या <प्रारंभ> और <अंत के बीच की सीमा शामिल हैं।

इस बात को ध्यान में रखते हुए, आइए हम इसका उपयोग कैसे करें इसके बारे में कुछ व्यावहारिक उदाहरण देखें।

उदाहरण:

आइए हम प्रदर्शित करें कि साकिला नमूना डेटाबेस का उपयोग करके खंड का उपयोग कैसे करें। एक उदाहरण पर विचार करें जहां हमें प्रत्येक फिल्म श्रेणी के लिए कुल राजस्व निर्धारित करने की आवश्यकता है।

हम योग विंडो फ़ंक्शन का उपयोग ओवर क्लॉज और जॉइन स्टेटमेंट के एक समूह के साथ कर सकते हैं जैसा कि निम्नलिखित उदाहरण में दिखाया गया है:

चुनना
श्रेणी.नाम एएस श्रेणी_नाम,
फ़िल्म.शीर्षक AS फ़िल्म_शीर्षक,
फ़िल्म.किराया_दर,
कुल राजस्व के रूप में SUM(भुगतान राशि) से अधिक (श्रेणी नाम के अनुसार विभाजन)।
से
पतली परत
जोड़ना
फ़िल्म_श्रेणी चालू
फिल्म.फिल्म_आईडी = फिल्म_श्रेणी.फिल्म_आईडी
जोड़ना
श्रेणी चालू
फ़िल्म_श्रेणी.श्रेणी_आईडी = श्रेणी.श्रेणी_आईडी
जोड़ना
इन्वेंट्री चालू
फिल्म.फिल्म_आईडी = इन्वेंट्री.फिल्म_आईडी
जोड़ना
किराये पर
इन्वेंट्री.इन्वेंटरी_आईडी = किराये.इन्वेंटरी_आईडी
जोड़ना
भुगतान चालू
किराये.रेंटल_आईडी = भुगतान.रेंटल_आईडी
द्वारा आदेश
श्रेणी नाम,
फिल्म का शीर्षक;

दी गई क्वेरी में, हम फिल्म का शीर्षक, किराये की दर का चयन करके शुरू करते हैं, और श्रेणी के नाम से प्रत्येक श्रेणी विभाजन का योग निर्धारित करने के लिए योग (श्रेणी नाम के अनुसार विभाजन पर भुगतान राशि) अभिव्यक्ति का उपयोग करते हैं।

हमें यह सुनिश्चित करने के लिए PARTITION BY खंड का उपयोग करना चाहिए कि प्रत्येक अद्वितीय श्रेणी में योग की गणना फिर से शुरू हो।

परिणामी आउटपुट इस प्रकार है:

ये लो!

निष्कर्ष

इस उदाहरण में, हमने SQL में OVER क्लॉज के साथ काम करने के बुनियादी सिद्धांतों का पता लगाया। यह कोई बुनियादी उपवाक्य नहीं है और इसके लिए अन्य SQL सुविधाओं से पूर्व परिचित होना आवश्यक है।