クエリでそれを選択しない理由はありますか?
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 crwhere 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 宣言を作成することもできます。オブジェクト型で DML を使用する場合、データベースは PL/SQL 定義型を認識しないため、PL/SQL レベルではなくデータベース レベルで作成する必要があります。
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;コード> プレ>
完全にテストされていません。ただし、それが一般的な考え方です。