पोस्टग्रेस रैंक

Postagresa Rainka



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

यह ट्यूटोरियल बताता है कि PostgreSQL फ़ंक्शंस के साथ कैसे काम किया जाए। हम फ़ंक्शन सिंटैक्स और पैरामीटर का भी पता लगाते हैं और कुछ व्यावहारिक उदाहरण देखते हैं।

PostgreSQL रैंक() फ़ंक्शन

निम्नलिखित PostgreSQL में रैंक() फ़ंक्शन का सिंटैक्स दिखाता है:







रैंक() ओवर (विभाजन_अभिव्यक्ति द्वारा विभाजन सॉर्ट_अभिव्यक्ति द्वारा आदेश [एएससी|डीईएससी])

हम रैंक() फ़ंक्शन को कॉल करके प्रारंभ करते हैं। फिर हम यह इंगित करने के लिए OVER कीवर्ड का उपयोग करते हैं कि हम एक विंडो फ़ंक्शन ऑपरेशन करना चाहते हैं।



अगला विभाजन_अभिव्यक्ति द्वारा विभाजन है। यह खंड किसी दिए गए अभिव्यक्ति के आधार पर पंक्तियों को विभिन्न विभाजनों में विभाजित करता है। रैंकिंग प्रत्येक विभाजन में स्वतंत्र रूप से की जाती है जहां प्रत्येक नए विभाजन के लिए रैंक पूर्णांक मान 1 से शुरू होता है।



अंत में, हमारे पास ORDER BY खंड है जो उस कॉलम या अभिव्यक्ति को निर्दिष्ट करता है जो पंक्ति क्रम निर्धारित करता है।





PostgreSQL रैंक() फ़ंक्शन उदाहरण

निम्नलिखित क्वेरी PostgreSQL के रैंक() फ़ंक्शन का उपयोग करने का एक मूल उदाहरण प्रदर्शित करती है:

मूल्य का चयन करें, रैंक() ओवर (मूल्य के अनुसार क्रम) रैंक के रूप में
से (
मान (10), (20), (5), (15), (10)
) एएस डेटा (मूल्य);

इस उदाहरण में, हम मानों को उनके आरोही क्रम के आधार पर रैंक करते हैं। मान की दो घटनाओं को समान रैंक के साथ निर्दिष्ट किया गया है क्योंकि वे समान हैं और क्रम के भीतर एक ही स्थिति में दिखाई देते हैं।



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

मूल्य चुनें, रैंक() ओवर (मूल्य के अनुसार विभाजन% 2 मूल्य के अनुसार क्रम) रैंक के रूप में
से (
मान (10), (20), (5), (15), (10)
) एएस डेटा (मूल्य);

पोस्टग्रेएसक्यूएल रैंक() क्लॉज द्वारा विभाजन के साथ फ़ंक्शन उदाहरण

निम्नलिखित उदाहरण पर विचार करें:

मूल्य चुनें, रैंक() ओवर (मूल्य के अनुसार विभाजन% 2 मूल्य के अनुसार क्रम) रैंक के रूप में
से (
मान (10), (20), (5), (15), (10)
) एएस डेटा (मूल्य);

इस उदाहरण में, हमने एक अभिव्यक्ति के साथ PARTITION BY क्लॉज जोड़ा है जो यह जांचता है कि मान एक सम या विषम संख्या है या नहीं। इसे प्रभावी रूप से मानों को दो विभाजनों में समूहित करना चाहिए: एक सम संख्याओं के लिए (जहां शेष 0 है) और दूसरा विषम संख्याओं के लिए (जहां शेष 1 है)।

परिणामी सेट इस प्रकार है:

एकाधिक SQL सुविधाओं के संयोजन द्वारा PostgreSQL रैंक() फ़ंक्शन उदाहरण

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

हम रैंक() फ़ंक्शन का उपयोग कर सकते हैं जैसा कि निम्नलिखित क्वेरी में दिखाया गया है:

ग्राहक_आईडी, प्रथम_नाम, अंतिम_नाम, कुल_भुगतान चुनें,
रैंक() से अधिक (कुल_भुगतान DESC द्वारा आदेश) एएस रैंक
से (
कुल_भुगतान के रूप में c.customer_id, c.first_name, c.last_name, SUM(p.amount) चुनें
ग्राहक से सी
c.customer_id = p.customer_id पर भुगतान p में शामिल हों
c.customer_id, c.first_name, c.last_name द्वारा समूह बनाएं
) एएस ग्राहक_भुगतान
रैंक के अनुसार ऑर्डर करें
सीमा 10;

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

आंतरिक सबक्वेरी हमें ग्राहक और भुगतान तालिकाओं को जोड़कर प्रत्येक ग्राहक के लिए कुल भुगतान की गणना करने की अनुमति देती है। फिर हम प्रत्येक ग्राहक के लिए भुगतान की राशि प्राप्त करने के लिए ग्राहक_आईडी, प्रथम_नाम और अंतिम_नाम कॉलम के आधार पर परिणाम को समूहीकृत करते हैं।

अंत में, बाहरी क्वेरी में, हम परिणाम सेट पर रैंक() फ़ंक्शन लागू करते हैं और इसे आरोही क्रम में total_ payment द्वारा ऑर्डर करते हैं। हम केवल शीर्ष 10 पंक्तियों को लाने के लिए सीमा खंड भी शामिल करते हैं।

जैसा कि आप देख सकते हैं, आप कई SQL सुविधाओं जैसे कि सॉर्टिंग, फ़िल्टरिंग, एग्रीगेट्स, जॉइन्स और बहुत कुछ को मिलाकर अधिक व्यावहारिक डेटा उत्पन्न कर सकते हैं।

निष्कर्ष

हमने पता लगाया कि हम परिभाषित स्थितियों के आधार पर परिणाम सेट से दी गई पंक्ति की रैंक लाने के लिए PostgreSQL में रैंक() फ़ंक्शन के साथ कैसे काम कर सकते हैं। हमने यह भी कवर किया कि अधिक जटिल क्वेरीज़ बनाने के लिए रैंक() फ़ंक्शन को अन्य SQL टूल के साथ कैसे संयोजित किया जाए।