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

पहले कुछ या सबसे अधिक अवलोकन खोजने पर TOP या रैंक का उपयोग करें

फर्म में पहले 100 लोगों को काम पर रखने के लिए

सबसे पहले, सावधान रहें कि नीचे दिए गए दोनों प्रश्नों के परिणामों में टाई के मामले शामिल हैं। जैसे भले ही आपके पास समान किराया तिथि वाले कर्मचारी हों, वे सूचियों में शामिल हैं, अर्थात सूचियों में कम से कम 100 लोग हैं।

यदि आपका डेटाबेस संस्करण 12c- है , तो आपको एक सबक्वेरी का उपयोग करने की आवश्यकता है जिसमें dense_rank() का परिणाम वापस करना है समारोह :

select department_name, department_id, first_name, hire_date, salary
  from
  (
   select d.department_name, d.department_id, e.first_name, e.hire_date, e.salary,
          dense_rank() over ( order by hire_date ) as e_rank_hire
     from Dtable_department d 
     join Etable_employee e
       on e.department_id = d.department_id
  )
 where e_rank_hire <= 100 
 order by e_rank_hire;

यदि आपका डेटाबेस संस्करण 12c+ है , तो आपको fetch . के लिए उप-क्वेरी का उपयोग करने की आवश्यकता नहीं है खंड :

select d.department_name, d.department_id, e.first_name, e.hire_date, e.salary
  from Dtable_department d 
  join Etable_employee e
    on e.department_id = d.department_id
order by hire_date
fetch first 100 rows with ties;

अपने मामले पर ध्यान दें कि partition by . का उपयोग करना खंड गलत है और इसे dense_rank() . के भीतर हटा दिया जाना चाहिए फ़ंक्शन की अभिव्यक्ति, और भाड़े की तारीखों का क्रम अवरोही नहीं बल्कि आरोही होना चाहिए।

शीर्ष 10 कर्मचारियों के लिए डेमो




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle में TIMEZONE के साथ TIMESTAMP का समयक्षेत्र घटक बदलें

  2. ओरेकल पर अद्यतन कैस्केड के साथ एक विदेशी कुंजी कैसे बनाएं?

  3. OracleDbType में बूलियन

  4. एकाधिक IN पैरामीटर के साथ संग्रहीत प्रक्रिया

  5. ट्रिगर अद्यतन क्लॉब त्रुटि