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

रैंक के साथ एसक्यूएल में पंक्तियों की रैंकिंग स्थिति कैसे जोड़ें ()

समस्या:

आप समान रैंक वाली पंक्तियों के बाद रैंकिंग स्थिति को छोड़ कर रिकॉर्ड रैंक करना चाहते हैं।

उदाहरण:

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

आईडी user_name स्कोर
111 जॉन 12
112 मैरी 23
115 लिसा 45
120 एलन 23
221 क्रिस 23

आइए सभी उपयोगकर्ताओं के नाम और उनके स्कोर को अवरोही क्रम में क्रमबद्ध करें और स्कोर के आधार पर प्रदर्शित करें।

समाधान 1:

SELECT RANK() OVER(ORDER BY score DESC) AS rank_place,
  user_name,
  score
FROM championship;

यह क्वेरी निम्न रैंकिंग लौटाती है:

रैंक_प्लेस user_name स्कोर
1 लिसा 45
2 मैरी 23
2 एलन 23
2 क्रिस 23
5 जॉन 12

ध्यान दें कि रैंक संख्या 1 से 5 तक होती है, जो कि अवरोही क्रम में स्कोर द्वारा क्रमबद्ध होती है।

चर्चा:

RANK का उपयोग करें यदि आप समान रैंक वाली पंक्तियों के बाद रैंकिंग पदों को छोड़ना चाहते हैं। हमारे उदाहरण में, मैरी, एलन और क्रिस सभी की रैंकिंग 2 की समान थी। अगली योग्य स्थिति 5 है (समान रैंक वाली 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. एसक्यूएल यूनियन - यूनियन ऑपरेटर पर एक व्यापक गाइड

  2. टेबल्स को कैसे मास्क करें और रेफरेंशियल इंटिग्रिटी को कैसे सुरक्षित रखें

  3. बिक्री रिकॉर्ड करने के लिए एक डेटाबेस मॉडलिंग। भाग 1

  4. FORMAT() अच्छा और सब कुछ है, लेकिन…

  5. ScyllaDB रुझान - उपयोगकर्ता रीयल-टाइम बिग डेटा डेटाबेस को कैसे नियोजित करते हैं