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 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;  

    完全にテストされていません。ただし、それが一般的な考え方です。




    1. Windows7でのMySQL5のインストールと操作

    2. Oracle-一意のListagg値

    3. phpファイルのエラー

    4. MySQLのDESCRIBE[テーブル]に相当するSQLiteはありますか?