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

सबक्वेरी - उच्चतम स्कोर प्राप्त करना

पारंपरिक तरीका एक विश्लेषणात्मक है। MAX() (या अन्य विश्लेषणात्मक कार्य):

select *
  from ( select s.student_id
              , w.last_name
              , w.first_name
              , s.numeric_grade
              , max(s.numeric_grade) over () as numeric_final_grade
           from grade s
           join section z
             on s.section_id = z.section_id
           join student w
             on s.student_id = w.student_id
          where z.course_no = 230 
            and z.section_id = 100 
            and s.grade_type_code = 'FI'
                )
 where numeric_grade = numeric_final_grade

लेकिन मैं शायद FIRST का उपयोग करना पसंद करूंगा। (रखें)।

select max(s.student_id) keep (dense_rank first order by s.numeric_grade desc) as student_id
     , max(w.last_name) keep (dense_rank first order by s.numeric_grade desc) as last_name
     , max(w.first_name) keep (dense_rank first order by s.numeric_grade desc) as first_na,e
     , max(s.numeric_grade_name) as numeric_final_grade
  from grade s
  join section z
    on s.section_id = z.section_id
  join student w
    on s.student_id = w.student_id
 where z.course_no = 230 
   and z.section_id = 100 
   and s.grade_type_code = 'FI'

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

पी.एस. ये अलग-अलग परिणाम देंगे, इसलिए वे थोड़े अलग हैं। विश्लेषणात्मक फ़ंक्शन डुप्लिकेट बनाए रखेगा, दो छात्रों के पास समान अधिकतम अंक होंगे (यही आपका सुझाव भी करेगा)। एग्रीगेट फ़ंक्शन डुप्लिकेट को हटा देगा, टाई की स्थिति में एक यादृच्छिक रिकॉर्ड लौटाएगा।



  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. dbsaint - फ़ॉर्म पुनर्प्राप्त करें EXCEL

  3. ओरेकल में, मैं उस तारीख का पता कैसे लगा सकता हूं जिस दिन डेलाइट सेविंग टाइम शुरू/समाप्त होता है?

  4. PHP Oracle क्वेरी लूप स्लो के अंदर स्टेटमेंट का चयन करें

  5. Oracle एक फ़ंक्शन को कॉल करने की प्रक्रिया बना रहा है