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

Oracle SQL - किसी कॉलम के उच्चतम 5 मान कैसे प्राप्त करें

ऐसा करने का सबसे अच्छा तरीका विश्लेषणात्मक कार्यों के साथ है, RANK() या DENSE_RANK() ...

SQL> select * from (
  2        select empno
  3               , sal
  4               , rank() over (order by sal desc) as rnk
  5        from emp)
  6  where rnk <= 5
  7  /

     EMPNO        SAL        RNK
---------- ---------- ----------
      7839       5000          1
      7788       3000          2
      7902       3000          2
      7566       2975          4
      8083       2850          5
      7698       2850          5

6 rows selected.

SQL>

DENSE_RANK() टाई होने पर गैप को कंप्रेस करता है:

SQL> select * from (
  2        select empno
  3               , sal
  4               , dense_rank() over (order by sal desc) as rnk
  5        from emp)
  6  where rnk <= 5
  7  /

     EMPNO        SAL        RNK
---------- ---------- ----------
      7839       5000          1
      7788       3000          2
      7902       3000          2
      7566       2975          3
      8083       2850          4
      7698       2850          4
      8070       2500          5

7 rows selected.

SQL>

आप कौन सा व्यवहार पसंद करते हैं यह आपकी व्यावसायिक आवश्यकताओं पर निर्भर करता है।

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

ROWNUM छद्म-स्तंभ का उपयोग करते हुए एक गैर-विश्लेषणात्मक समाधान भी है। यह क्लूनी है क्योंकि ROWNUM को ORDER BY क्लॉज से पहले लागू किया जाता है, जिससे अप्रत्याशित परिणाम हो सकते हैं। ROW_NUMBER() या किसी रैंकिंग फ़ंक्शन के बजाय ROWNUM का उपयोग करने का शायद ही कोई कारण हो।



  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. त्रुटि 404 EM 12c के साथ नहीं मिली

  3. Oracle में NVL2 फ़ंक्शन

  4. ASP क्लासिक SQL क्वेरी त्रुटि संदेश, सही सिंटैक्स कृपया

  5. Oracle PL/SQL स्ट्रिंग तुलना समस्या