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

SQL में DENSE_RANK () के साथ पंक्तियों में रैंकिंग स्थिति कैसे जोड़ें

समस्या:

आप लगातार पंक्तियों में रैंकिंग स्थिति जोड़ना चाहते हैं, भले ही पंक्तियों का मान समान हो।

उदाहरण:

हमारे डेटाबेस में competition निम्नलिखित कॉलम में डेटा के साथ:id (प्राथमिक कुंजी), first_name , last_name , और score

आईडी प्रथम_नाम last_name स्कोर
11 जॉन थॉमस 345
14 मैरी जॉनसन 222
16 लिसा भूरा 154
23 एलन ब्लेक 222
32 क्रिस टेलर 154

आइए छात्रों के बारे में सभी विवरण प्रदर्शित करें:उनका अंतिम नाम, पहला नाम, और स्कोर score द्वारा क्रमबद्ध घटते क्रम में। यदि एक से अधिक छात्रों के लिए कुछ अंक समान हैं, तो हम स्थिति संख्याओं को छोड़ना नहीं चाहते हैं।

समाधान 1:

SELECT DENSE_RANK() OVER(ORDER BY score DESC) AS d_rank,
  first_name,
  last_name,
  score
FROM competition;

ध्यान दें कि रैंक 1 से 3 तक होती है।

चर्चा:

DENSE_RANK का उपयोग करें यदि आप समान रैंक वाली पंक्तियों के बाद रैंकिंग स्थिति को छोड़ना नहीं चाहते हैं। हमारे उदाहरण में, भले ही मैरी और एलन की रैंक 2 समान है, लिसा की स्थिति 3 है।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. डेटाबेस डिजाइन Vertabelo . के साथ

  2. टेबल एक्सप्रेशन के मूल तत्व, भाग 6 - रिकर्सिव सीटीई

  3. लेनदेन लॉग विन्यास मुद्दे

  4. टैप एंड पार्क:एक पार्किंग ऐप डेटा मॉडल

  5. यूडीएफ के लिए शोप्लान संवर्द्धन