Database
 sql >> डेटाबेस >  >> RDS >> Database

SQL में एक विभाजन के भीतर पंक्तियों को कैसे रैंक करें

समस्या:

परिणाम सेट में, आप प्रत्येक विभाजन के भीतर रिकॉर्ड और रैंक पंक्तियों को विभाजित करना चाहते हैं, विभाजन के भीतर पंक्तियों की रैंक दिखाने के लिए एक और कॉलम जोड़ना चाहते हैं।

उदाहरण:

हमारे डेटाबेस में निम्नलिखित कॉलम में डेटा के साथ पत्रिका नाम की एक तालिका है:id (प्राथमिक कुंजी), name , category , और price

<थ>नाम
आईडी श्रेणी कीमत
105 देश में रहने वाले जीवनशैली 1.70
108 समाचार पत्रिका समाचार 3.35
115 डेसिबल संगीत 6.50
123 ड्रम पत्रिका संगीत 6.50
145 सूर्यास्त जीवनशैली 12.00
155 विश्व जीवनशैली 9.50
158 कीबोर्ड संगीत 8.45

आइए पत्रिकाओं को श्रेणी . के अनुसार समूहित करें और प्रत्येक समूह को कीमत . के आधार पर अवरोही क्रम में रैंक करें . प्रत्येक पत्रिका के लिए रैंकिंग स्थिति, नाम, श्रेणी और मूल्य प्रदर्शित करें।

समाधान:

SELECT  
  category,
  name,
  price,
  RANK() OVER (PARTITION BY category
                    ORDER BY price DESC
                    ) AS price_rank
FROM magazine;

ये रहा परिणाम:

<थ>नाम
श्रेणी कीमत price_rank
जीवनशैली सूर्यास्त 12.00 1
जीवनशैली विश्व 9.50 2
जीवनशैली देश में रहने वाले 1.70 3
संगीत कीबोर्ड 8.45 1
संगीत डेसिबल 6.50 2
संगीत ड्रम पत्रिका 6.50 2
समाचार समाचार पत्रिका 3.35 1

चर्चा:

पंक्तियों को विभाजित करने और उन्हें विभाजन के भीतर उनकी स्थिति के आधार पर रैंक करने के लिए, RANK () फ़ंक्शन का उपयोग PARTITION BY क्लॉज के साथ करें।

SQL का RANK () फ़ंक्शन हमें परिणाम सेट के भीतर या प्रत्येक विभाजन के भीतर एक रिकॉर्ड की स्थिति जोड़ने की अनुमति देता है। हमारे उदाहरण में, हम एक विभाजन के भीतर पंक्तियों को रैंक करते हैं।

ओवर () क्लॉज हमेशा रैंक () के बाद आता है। ओवर () में क्लॉज द्वारा ऑर्डर होना चाहिए। यदि आप किसी पार्टीशन के भीतर रैंक लौटा रहे हैं, तो OVER() क्लॉज के अंदर एक PARTITION BY क्लॉज रखें। PARTITION BY के बाद एक एक्सप्रेशन या कॉलम नाम आता है; हमारे उदाहरण में, हम category . कॉलम का उपयोग करते हैं (PARTITION BY category )

नोट: यदि आप पार्टिशन का उपयोग नहीं कर रहे हैं, तो आप पार्टिशन बाय को छोड़ सकते हैं और बस ऑर्डर बाय क्लॉज को ओवर () में डाल सकते हैं।

PARTITION BY के बाद, ORDER BY उसके बाद सॉर्टिंग कॉलम या एक्सप्रेशन के नाम रखें। हमारे उदाहरण में, हम price . कॉलम के आधार पर अवरोही क्रम में सॉर्ट कर रहे हैं (ORDER BY price DESC ) डीईएससी कीवर्ड अवरोही क्रम को इंगित करता है।

उपरोक्त उदाहरण में, RANK () का उपयोग करके PARTITION BY द्वारा सेट किए गए परिणामों को उनकी श्रेणी द्वारा पत्रिकाओं के अलग-अलग समूहों में विभाजित किया गया है . प्रत्येक समूह के साथ, पंक्तियों को कीमत . द्वारा क्रमबद्ध किया गया था और फिर उस समूह में रैंक किया गया।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Azure कंटेनर सेवा पर डॉकर झुंड क्लस्टर बनाना

  2. Azure SQL डेटाबेस में स्वचालित अनुक्रमणिका प्रबंधन

  3. टेबल एक्सप्रेशन के फंडामेंटल, भाग 9 - व्युत्पन्न टेबल और सीटीई की तुलना में दृश्य

  4. टाइम सीरीज डेटाबेस क्या है?

  5. कैसे सुनिश्चित करें कि डेटाबेस का नियमित रूप से बैकअप लिया जाता है