Advertisement
Kocyk

Untitled

Dec 22nd, 2022
1,256
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 2.16 KB | None | 0 0
  1. -- Utwórz tabelę o nazwie Przedmiot_raport. Powinna ona zawierać informacje o studentach, ktorzy uzyskali największa liczbe punktow
  2. -- ze zdanego egzaminu z danego przedmiotu. Studenta nalezy opisac przy pomocy identyfikatora, nazwiska i imienia.
  3. -- Dodatkowo podac informacje o liczbie uzyskanych punktow. Dane o studencie i liczbie punktow nalezy umiescic w kolekcji.
  4.  
  5. CREATE OR REPLACE TYPE t_Student_Pkt AS object
  6.         (id             varchar2(7),
  7.         nazwisko    varchar2(40),
  8.         imie            varchar2(15),
  9.         liczba_pkt  NUMBER);
  10.  
  11. CREATE OR REPLACE TYPE tkol_Studenci IS TABLE OF t_Student_Pkt ;
  12.  
  13. CREATE TABLE Przedmiot_Raport (
  14.     nazwa_przedmiot        varchar2(50),
  15.     lista   tkol_Studenci
  16.     ) nested TABLE lista store AS lista_tab;
  17.  
  18. DECLARE
  19.     cursor c1 IS SELECT id_przedmiot, nazwa_przedmiot FROM przedmioty ORDER BY 1 ;
  20.    
  21.     FUNCTION return_kol_stud(pidp NUMBER) RETURN tkol_Studenci
  22.         IS
  23.         kol_stud     tkol_Studenci := tkol_Studenci();
  24.         cursor c2 IS SELECT s.id_student, nazwisko, imie, punkty FROM studenci s INNER JOIN egzaminy e
  25.                         ON s.id_student = e.id_student
  26.                         WHERE e.id_przedmiot = pidp AND zdal = 'T' AND punkty = (
  27.                                                                                                             SELECT MAX(punkty)
  28.                                                                                                             FROM egzaminy e2
  29.                                                                                                             WHERE e2.id_przedmiot = e.id_przedmiot
  30.                                                                                                                         AND e2.zdal = e.zdal
  31.                                                                                                                 ) ;
  32.         BEGIN
  33.             NULL;
  34.             RETURN kol_stud ;
  35.         END return_kol_stud;
  36.  
  37. BEGIN
  38.     FOR vc1 IN c1 loop
  39.         -- kol_Roczne_Dane := return_kol_msc(vc1.rok);
  40.         -- insert into raport values(vc1.rok, kol_roczne_dane);
  41.         NULL;
  42.     END loop;
  43. END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement