Microsoft SQL Server
रैंकिंग कार्य
खोज…
वाक्य - विन्यास
- DENSE_RANK () OVER ([<विभाजन_by_clause>] <order_by_clause>)
- RANK () OVER ([part_by_clause] order_by_clause)
पैरामीटर
तर्क | विवरण |
---|---|
<partition_by_clause> | FROM क्लॉज द्वारा उत्पादित परिणाम को उन विभाजनों में विभाजित करता है जिनमें DENSE_RANK फ़ंक्शन लागू होता है। सिंटैक्स PARTITION BY पार्टीशन के लिए, OVER Clause (Transact-SQL) देखें । |
<order_by_clause> | उस क्रम को निर्धारित करता है जिसमें DENSE_RANK फ़ंक्शन विभाजन में पंक्तियों पर लागू होता है। |
OVER ( [ partition_by_clause ] order_by_clause) | part_by_clause, FROM क्लॉज द्वारा निर्मित परिणाम सेट को उन partition_by_clause विभाजित करता है जिनमें फ़ंक्शन को लागू किया जाता है। यदि निर्दिष्ट नहीं है, तो फ़ंक्शन एक समूह के रूप में सेट किए गए क्वेरी परिणाम की सभी पंक्तियों को मानता है। आदेश लागू होने से पहले order_by_clause डेटा के क्रम को निर्धारित करता है। Order_by_clause की आवश्यकता है। RANK फ़ंक्शन के लिए OVER क्लॉज की <rows or range clause> को निर्दिष्ट नहीं किया जा सकता है। अधिक जानकारी के लिए, OVER Clause (Transact-SQL) देखें । |
टिप्पणियों
यदि एक ही विभाजन में दो या दो से अधिक पंक्तियाँ एक रैंक के लिए बाँधती हैं, तो प्रत्येक बंधी हुई पंक्तियाँ समान रैंक प्राप्त करती हैं। उदाहरण के लिए, यदि दो शीर्ष सेल्सपर्सन का SalesYTD मान समान है, तो वे दोनों एक स्थान पर हैं। अगले उच्चतम SalesYTD के साथ विक्रेता नंबर दो पर है। यह इस पंक्ति से पहले आने वाली अलग-अलग पंक्तियों की संख्या से एक अधिक है। इसलिए, DENSE_RANK
फ़ंक्शन द्वारा दिए गए नंबर में अंतराल नहीं होते हैं और हमेशा लगातार रैंक होते हैं।
संपूर्ण क्वेरी के लिए उपयोग किया जाने वाला क्रम क्रम उस क्रम को निर्धारित करता है जिसमें पंक्तियाँ एक परिणाम में दिखाई देती हैं। इसका तात्पर्य यह है कि पंक्ति क्रमांक एक की संख्या विभाजन में पहली पंक्ति नहीं है।
DENSE_RANK
nondeterministic है। अधिक जानकारी के लिए, नियतात्मक और Nondeterministic कार्य देखें ।
पद()
RANK () विभाजित विभाजन कॉलम के परिणाम सेट में प्रत्येक पंक्ति के रैंक को लौटाता है।
जैसे:
Select Studentid,Name,Subject,Marks,
RANK() over(partition by name order by Marks desc)Rank
From Exam
order by name,subject
Studentid Name Subject Marks Rank
101 Ivan Maths 70 2
101 Ivan Science 80 1
101 Ivan Social 60 3
102 Ryan Maths 60 2
102 Ryan Science 50 3
102 Ryan Social 70 1
103 Tanvi Maths 90 1
103 Tanvi Science 90 1
103 Tanvi Social 80 3
DENSE_RANK ()
RANK के समान ()। यह बिना किसी अंतराल के रैंक लौटाता है:
Select Studentid, Name,Subject,Marks,
DENSE_RANK() over(partition by name order by Marks desc)Rank
From Exam
order by name
Studentid Name Subject Marks Rank
101 Ivan Science 80 1
101 Ivan Maths 70 2
101 Ivan Social 60 3
102 Ryan Social 70 1
102 Ryan Maths 60 2
102 Ryan Science 50 3
103 Tanvi Maths 90 1
103 Tanvi Science 90 1
103 Tanvi Social 80 2