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

तालिका प्रकार में डेटा पर गणना करें

क्या आपके प्रश्न में इसे न चुनने का कोई कारण है?

select x.student_id as student_id, cr.course_id as course_i
     , g.score as grade, AVG(g.score) OVER (PARTITION BY x.student_id) as avg_score
 from sf x, grade g, class cs, course cr
where x.no_of_courses>4 
  and x.student_id = g.student_id 
  and cs.course_id = cr.course_id
  and g.class_id = cs.class_id;

यह आपके रिकॉर्ड में avg_score नाम की एक नई फ़ील्ड डाल देगा, जिसमें किसी दिए गए छात्र के औसत स्कोर होंगे।

संपादित करें:वैकल्पिक रूप से, आप रिकॉर्ड संरचना के लिए डेटाबेस स्तर TYPE घोषणा बना सकते हैं। यदि आप किसी ऑब्जेक्ट प्रकार पर डीएमएल का उपयोग करना चाहते हैं, तो आपको इसे डेटाबेस स्तर पर बनाना होगा, न कि पीएल/एसक्यूएल स्तर पर, क्योंकि डेटाबेस पीएल/एसक्यूएल परिभाषित प्रकारों के बारे में नहीं जानता है।

CREATE OR REPLACE TYPE t_rec AS OBJECT
(
  student_id number,
  course_id number,
  grade number
);

CREATE OR REPLACE TYPE abc AS TABLE OF t_rec;

फिर, आपके कोड में:

FOR Rec IN (SELECT student_id, AVG(grade) avg_grade 
              FROM TABLE ( cast( v1 as abc) )
             GROUP BY student_id) 
LOOP
   dbms_output.put_line(Rec.student_id, Rec.avg_grade);
END LOOP;

पूरी तरह से परीक्षण नहीं किया गया। हालांकि, यह सामान्य विचार है।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पीएचपी - oci_connect नहीं मिला

  2. जावा कोड का उपयोग करके नमूना हेलोवर्ड func को कैसे कॉल करें

  3. समूहीकरण के साथ समस्या

  4. Oracle मुसीबत में पैरामीटरयुक्त क्वेरी

  5. Oracle पर चेक बाधा की सामग्री कैसे देखें