Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Utworzyć tabelę bazy danych o nazwie Analityka_Egzaminy. Tabela powinna zawierać
- informacje o liczbie niezdanych egzaminów poszczególnych studentów z poszczególnych
- przedmiotów oraz ogólnej liczbie egzaminów studenta z danego przedmiotu. W tabeli
- utworzyć kolumny opisujące studenta (identyfikator, nazwisko i imię), przedmiot (nazwa),
- liczbę niezdanych egzaminów z przedmiotu oraz liczbę wszystkich egzaminów studenta z
- danego przedmiotu. Dane dotyczące przedmiotu oraz poszczególnych liczb należy umieścić w
- kolumnie, będącej tabelą zagnieżdżONą. Wprowadzić dane DO tabeli Analityka_Egzaminy na
- podstawie danych zgromadzonych w tabelach Egzaminy, Przedmioty i Studenci.
- CREATE
- OR
- REPLACE TYPE liczby AS object
- (
- liczba_niezalicz INTEGER,
- liczba_ogol INTEGER,
- nazwa_p VARCHAR2(100) );
- CREATE
- OR
- REPLACE TYPE analityczny
- IS
- TABLE OF liczby;
- CREATE TABLE analityka_egzaminy
- (
- id_student VARCHAR2(7),
- nazwisko VARCHAR2(25),
- imie VARCHAR2(15),
- dane analityczny
- )
- nested TABLE dane store AS dane_e;
- DECLARE
- vid_student VARCHAR2(7);
- vnazwisko VARCHAR2(25);
- vimie VARCHAR2(15);
- vnazwa_p VARCHAR2(100);
- liczba_ogol INTEGER;
- liczba_niezd INTEGER;
- symbol VARCHAR2(1);
- CURSOR c_dane IS
- SELECT DISTINCT e.id_student,
- s.nazwisko,
- s.imie,
- p.nazwa_p,
- COUNT (e.id_przedmiot) --total amont of exams
- FROM egzaminy e
- left join studenci s
- ON s.id_student = e.id_student
- left join przedmioty p
- ON p.id_przedmiot = e.id_przedmiot
- GROUP BY e.id_student,
- s.nazwisko,
- s.imie,
- p.nazwa_p;
- CURSOR c_take(pid_student VARCHAR2)
- IS
- SELECT COUNT(id_przedmiot) AS liczba--amount of failed exam's
- FROM egzaminy
- WHERE zdal = 'N'
- AND id_student = pid_student
- GROUP BY id_student;
- BEGIN
- OPEN c_dane;
- LOOP
- FETCH c_dane
- INTO vid_student,
- vnazwisko,
- vimie,
- vnazwa_p,
- liczba_ogol;
- EXIT
- WHEN c_dane%NOTFOUND;
- FOR x IN c_take(vid_student)
- LOOP
- BEGIN
- SELECT 'x'
- INTO symbol
- FROM analityka_egzaminy
- WHERE id_student = vid_student;
- INSERT INTO the
- (
- SELECT dane
- FROM analityka_egzaminy
- WHERE id_student = vid_student
- )
- VALUES
- (
- liczby(x.liczba, liczba_ogol ,vnazwa_p)
- );
- EXCEPTION
- WHEN NO_DATA_FOUND THEN
- INSERT INTO analityka_egzaminy VALUES
- (
- vid_student,
- vnazwisko,
- vimie,
- analityczny(liczby(x.liczba, liczba_ogol ,vn
- azwa_p))
- );
- END;
- END LOOP;
- END LOOP;
- CLOSE c_dane;
- END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement