MySQL रो नंबर विंडो फंक्शन

Mysql Row Number Window Function



MySQL के भीतर, ROW NUMBER() विधि में विभाजन के अंदर प्रत्येक पंक्ति के लिए एक कालानुक्रमिक संख्या होती है। यह किसी तरह का सिर्फ एक विंडो फीचर है। पंक्तियों का आंकड़ा विभाजन के भीतर पंक्तियों की आकृति के साथ 1 से शुरू होता है। याद रखें, संस्करण 8.0 से पहले, MySQL ROW NUMBER () फ़ंक्शन की अनुमति नहीं देता है, यह एक सत्र चर प्रदान करता है जो इस सुविधा की नकल करने में मदद करता है। हम इस गाइड में MySQL ROW NUMBER() कार्यक्षमता के बारे में अधिक समझेंगे और परिणाम संग्रह में प्रत्येक पंक्ति के लिए एक क्रमागत संख्या तैयार करेंगे। MySQL में, ROW_NUMBER() विधियों का उपयोग या तो बाद के खंडों के साथ किया जाता है:

  • इसमें ओवर () क्लॉज का इस्तेमाल किया जाएगा।
  • खंड द्वारा आदेश उल्लिखित कॉलम के क्रम के अनुसार परिणाम की व्यवस्था करते हैं।

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

>> चुनते हैं col_name,पंक्ति नंबर()ऊपर( PARTITION col_name . द्वारा, द्वारा आदेश col_name) जैसा पंक्ति_संख्या से तालिका नाम;

आइए अनुप्रयोगों से MySQL कमांड-लाइन क्लाइंट शेल खोलें और लॉग इन करने के लिए पासवर्ड टाइप करें।









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



>> चुनते हैं * से आंकड़े ।जानवरों;





उदाहरण 01: ROW_NUMBER() क्लॉज द्वारा ऑर्डर का उपयोग करना

हम पंक्ति संख्या फ़ंक्शन के कुछ उदाहरणों के बारे में विस्तार से बताने के लिए उसी तालिका का उपयोग करेंगे। हम केवल ORDER BY क्लॉज का उपयोग करते हुए ROW_NUMBER () फ़ंक्शन के बाद ओवर () का एक उदाहरण ले रहे हैं। हम कॉलम प्राइस ऑर्डर के अनुसार पंक्तियों को क्रमांकित करते हुए सभी रिकॉर्ड प्राप्त कर रहे हैं। हमने एक कॉलम को row_num नाम दिया है, जो रो के नंबर्स को स्टोर करेगा। आइए ऐसा करने के लिए नीचे दिए गए आदेश का प्रयास करें।

>> चुनते हैं *,पंक्ति नंबर()ऊपर( द्वारा आदेश कीमत) जैसा पंक्ति_संख्या से आंकड़े ।जानवरों;

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



आइए कॉलम आयु के सॉर्टिंग ऑर्डर का उपयोग करते हुए उसी क्वेरी को निष्पादित करें जिसके बाद ORDER BY क्लॉज आता है। आउटपुट आयु कॉलम के अनुसार दिया जाएगा।

>> चुनते हैं *,पंक्ति नंबर()ऊपर( द्वारा आदेश उम्र) जैसा पंक्ति_संख्या से आंकड़े ।जानवरों;

उदाहरण 02: ROW_NUMBER() खंड द्वारा विभाजन का उपयोग करना

हम परिणामों की जांच के लिए ROW_NUMBER() क्वेरी में केवल PARTITION BY क्लॉज का उपयोग करेंगे। कॉलम रंग के अनुसार तालिका को विभाजित करते हुए, हम ROW_NUMBER() और OVER क्लॉज के बाद रिकॉर्ड लाने के लिए SELECT क्वेरी का उपयोग कर रहे हैं। कमांड शेल में संलग्न नीचे दिए गए कमांड को निष्पादित करें।

>> चुनते हैं *,पंक्ति नंबर()ऊपर( PARTITION रंग के अनुसार) जैसा पंक्ति_संख्या से आंकड़े ।जानवरों;

आप परिणाम में देख सकते हैं कि रंगों की छँटाई क्रम के अनुसार, विभाजनों में पंक्तियों की संख्या निर्दिष्ट की गई है। जैसा कि हमारे पास रंग ब्लैक के लिए 4 मान हैं जो 4 पंक्तियों को लेते हैं। यही कारण है कि इसमें 1 से 4 तक और इसके विपरीत चार-पंक्ति संख्याएँ मिली हैं।

इसी उदाहरण का प्रयास करें, इस बार लिंग द्वारा विभाजित किया गया। जैसा कि हम जानते हैं, इस तालिका में हमारे पास केवल दो लिंग हैं, इसलिए 2 विभाजन बनेंगे। मादाएं 9 पंक्तियों में रहती हैं, इसलिए इसमें 1 से 9 तक की पंक्ति संख्या होती है। जबकि पुरुषों में 8 मान होते हैं, इसलिए इसमें 1 से 8 तक होते हैं।

>> चुनते हैं *,पंक्ति नंबर()ऊपर( PARTITION लिंग के अनुसार) जैसा पंक्ति_संख्या से आंकड़े ।जानवरों;

उदाहरण 03: ROW_NUMBER () द्वारा विभाजन और आदेश द्वारा का उपयोग करना

हमने उपरोक्त दो उदाहरणों को MySQL कमांड-लाइन में किया है, अब MySQL वर्कबेंच 8.0 में ROW_NUMBER() उदाहरण करने का समय आ गया है। तो, एप्लिकेशन से MySQL वर्कबेंच 8.0 खोलें। काम शुरू करने के लिए MySQL वर्कबेंच को स्थानीय होस्ट रूट डेटाबेस से कनेक्ट करें।

MySQL कार्यक्षेत्र के बाईं ओर, आपको स्कीमा बार मिलेगा, नेविगेटर को उड़ाएगा। इस स्कीमा बार में, आपको डेटाबेस की सूची मिलेगी। डेटाबेस सूची के तहत, आपके पास अलग-अलग टेबल और संग्रहीत कार्यविधियाँ होंगी, जैसा कि आप नीचे की छवि में देख सकते हैं। हमारे डेटाबेस 'डेटा' में हमारे पास अलग-अलग टेबल हैं। हम ROW_NUMBER () फ़ंक्शन कार्यान्वयन के लिए इसका उपयोग शुरू करने के लिए क्वेरी क्षेत्र में SELECT कमांड का उपयोग करके तालिका 'order1' खोलेंगे।

>> चुनते हैं * से आंकड़े .आदेश1;

तालिका क्रम1 को ग्रिड दृश्य में प्रदर्शित किया गया है जैसा कि नीचे दिखाया गया है। आप देख सकते हैं कि इसमें 4 कॉलम फ़ील्ड, आईडी, क्षेत्र, स्थिति और ऑर्डर नंबर हैं। हम एक ही समय में ORDER BY और PARTITION BY क्लॉज का उपयोग करते हुए इस तालिका के सभी रिकॉर्ड प्राप्त करेंगे।

MySQL वर्कबेंच 8.0 के क्वेरी क्षेत्र में, नीचे प्रदर्शित क्वेरी टाइप करें। क्वेरी को सेलेक्ट क्लॉज के साथ शुरू किया गया है, जिसमें ओवर क्लॉज के साथ ROW_NUMBER () फंक्शन के बाद सभी रिकॉर्ड्स प्राप्त होते हैं। OVER क्लॉज के बाद, हमने इस तालिका के अनुसार तालिका को विभाजन में विभाजित करने के लिए पार्टिशन बाय स्टेटमेंट द्वारा आगे बढ़े कॉलम स्टेटस को निर्दिष्ट किया है। कॉलम क्षेत्र के अनुसार तालिका को अवरोही तरीके से व्यवस्थित करने के लिए ORDER BY क्लॉज का उपयोग किया जाता है। पंक्ति संख्या को row_num कॉलम में रखा जाएगा। इस कमांड को निष्पादित करने के लिए फ्लैश आइकन पर टैप करें।

नीचे प्रदर्शित परिणाम दिखाया जाएगा। सबसे पहले, तालिका को कॉलम Status के मान के अनुसार दो भागों में विभाजित किया गया है। उसके बाद, इसे कॉलम 'क्षेत्र' के अवरोही क्रम में प्रस्तुत किया गया है और विभाजन को पंक्ति संख्याओं के साथ सौंपा गया है।

निष्कर्ष:

अंत में, हमने MySQL वर्कबेंच और MySQL कमांड-लाइन क्लाइंट शेल में ROW_NUMBER () फ़ंक्शन का उपयोग करने में सभी आवश्यक उदाहरण पूरे कर लिए हैं।