Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

melakukan perhitungan pada data dalam tipe tabel

Apakah ada alasan untuk tidak memilihnya dalam kueri Anda?

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;

Itu akan menempatkan bidang baru dalam catatan Anda bernama avg_score, dengan skor rata-rata untuk siswa tertentu.

EDIT:Atau, Anda dapat membuat deklarasi JENIS tingkat database untuk struktur rekaman. Jika Anda ingin menggunakan DML pada tipe objek, Anda harus membuatnya di level database, bukan di level PL/SQL, karena database tidak tahu tentang tipe yang ditentukan 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;

Kemudian, dalam kode Anda:

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;

Benar-benar belum teruji. Itu ide umumnya.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pelajari Cara Menjalankan Prosedur di Toad Untuk Oracle

  2. Perjalanan OOW15 Saya Selesai

  3. Apakah Oracle memiliki konsep indeks yang difilter?

  4. 4 Cara Menemukan Baris yang Mengandung Huruf Kecil di Oracle

  5. Kesalahan adaptor Protokol TNS saat memulai Oracle SQL*Plus