Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 3

--1.

Prosečna dnevna isporuka struje za jedinicu


DECLARE
v_sifra_pj elektrodistribucija.sifra_pj%TYPE := 9;
v_prosecna_isporuka INTEGER;
BEGIN
SELECT AVG(kolicina)
INTO v_prosecna_isporuka
FROM isporuka_struje
WHERE elektrodistribucija_sifra_pj = v_sifra_pj;

DBMS_OUTPUT.PUT_LINE('Prosečna dnevna isporuka struje za elektrodistribucijsku


jedinicu ' || v_sifra_pj || ' iznosi ' || v_prosecna_isporuka || ' kW.');
END;

--2. Maksimalna snaga među proizvođačima


DECLARE
v_max_snaga proizvodjac_struje.maksimalna_snaga%TYPE;
BEGIN
SELECT MAX(maksimalna_snaga)
INTO v_max_snaga
FROM proizvodjac_struje;

DBMS_OUTPUT.PUT_LINE('Najveća maksimalna snaga među proizvođačima struje iznosi


' || v_max_snaga || ' kW.');
END;

--3. Da li postoji isporuka struje za određeni datum i jedinicu


DECLARE
v_datum DATE := TO_DATE('2023-01-02', 'YYYY-MM-DD');
v_sifra_pj elektrodistribucija.sifra_pj%TYPE := 10;
v_postoji_isporuka NUMBER;
BEGIN
SELECT COUNT(*)
INTO v_postoji_isporuka
FROM isporuka_struje
WHERE datum = v_datum AND elektrodistribucija_sifra_pj = v_sifra_pj;

IF v_postoji_isporuka > 0 THEN


DBMS_OUTPUT.PUT_LINE('Postoji isporuka struje za datum ' || v_datum || ' i
elektrodistribucijsku jedinicu ' || v_sifra_pj || '.');
ELSE
DBMS_OUTPUT.PUT_LINE('Nema isporuke struje za datum ' || v_datum || ' i
elektrodistribucijsku jedinicu ' || v_sifra_pj || '.');
END IF;
END;

--4. Ukupna proizvedena energija za sve termoelektrane


DECLARE
v_ukupna_proizvodnja INTEGER := 0;
BEGIN
FOR rec IN (SELECT broj_kw FROM dnevna_proizvodnja_struje dps JOIN
termoelektrana te ON dps.proizvodjac_struje_sifra_pj = te.sifra_pj)
LOOP
v_ukupna_proizvodnja := v_ukupna_proizvodnja + rec.broj_kw;
END LOOP;

DBMS_OUTPUT.PUT_LINE('Ukupna proizvodnja električne energije za sve


termoelektrane iznosi ' || v_ukupna_proizvodnja || ' kW.');
END;
--5. Ukupna proizvodnja energije za datum
DECLARE
v_datum DATE := TO_DATE('2023-01-01', 'YYYY-MM-DD');
v_ukupna_proizvodnja INTEGER := 0;
BEGIN
SELECT SUM(broj_kw)
INTO v_ukupna_proizvodnja
FROM dnevna_proizvodnja_struje
WHERE datum = v_datum;

DBMS_OUTPUT.PUT_LINE('Ukupna proizvodnja struje za datum ' || v_datum || ' je '


|| v_ukupna_proizvodnja || ' kW.');
END;

--6. Prosečna proizvodnja po hidroelektrani za određeni mesec


DECLARE
v_mesec CHAR(7) := '2023-01'; -- Format 'YYYY-MM'
v_prosecna_proizvodnja NUMBER;
BEGIN
FOR rec IN (SELECT h.sifra_pj, pj.naziv, AVG(d.broj_kw) AS prosecna_proizvodnja
FROM hidroelektrana h
JOIN dnevna_proizvodnja_struje d ON h.sifra_pj =
d.proizvodjac_struje_sifra_pj
JOIN proizvodjac_struje ps ON h.sifra_pj = ps.sifra_pj
JOIN poslovna_jedinica pj ON ps.sifra_pj = pj.sifra_pj
WHERE TO_CHAR(d.datum, 'YYYY-MM') = v_mesec
GROUP BY h.sifra_pj, pj.naziv)
LOOP
v_prosecna_proizvodnja := rec.prosecna_proizvodnja;
DBMS_OUTPUT.PUT_LINE('Hidroelektrana ' || rec.naziv || ' (' || rec.sifra_pj
|| '): ' || v_prosecna_proizvodnja || ' kW prosečna dnevna proizvodnja u ' ||
v_mesec);
END LOOP;
END;

--7. Ukupna isporuka uglja za određenu vrstu rudnika


DECLARE
v_rudnik_sifra_pj rudnik.sifra_pj%TYPE := 1;
v_ukupna_isporuka INTEGER := 0;
BEGIN
FOR rec IN (SELECT kolicina FROM isporuka_uglja WHERE rudnik_sifra_pj =
v_rudnik_sifra_pj) LOOP
v_ukupna_isporuka := v_ukupna_isporuka + rec.kolicina;
END LOOP;

DBMS_OUTPUT.PUT_LINE('Ukupna isporuka uglja za rudnik sa šifrom PJ ' ||


v_rudnik_sifra_pj || ' iznosi ' || v_ukupna_isporuka || ' tona.');
END;

--8. Maksimalna snaga među proizvođačima struje za određenu vrstu proizvođača


DECLARE
v_tip_proizvodjaca_struje VARCHAR2(18) := 'hidroelektrana';
v_max_snaga proizvodjac_struje.maksimalna_snaga%TYPE;
BEGIN
SELECT MAX(maksimalna_snaga)
INTO v_max_snaga
FROM proizvodjac_struje
WHERE tip_proizvodjaca_struje = v_tip_proizvodjaca_struje;
DBMS_OUTPUT.PUT_LINE('Najveća maksimalna snaga među proizvođačima ' ||
v_tip_proizvodjaca_struje || ' iznosi ' || v_max_snaga || ' kW.');
END;

--9. Prosečna dnevna isporuka struje za sve elektrodistribucijske jedinice


DECLARE
CURSOR elektrodistribucije_cur IS
SELECT DISTINCT elektrodistribucija_sifra_pj
FROM isporuka_struje;

v_sifra_pj isporuka_struje.elektrodistribucija_sifra_pj%TYPE;
v_prosecna_isporuka INTEGER;
BEGIN
FOR elektrodistribucija_rec IN elektrodistribucije_cur LOOP
v_sifra_pj := elektrodistribucija_rec.elektrodistribucija_sifra_pj;

SELECT AVG(kolicina)
INTO v_prosecna_isporuka
FROM isporuka_struje
WHERE elektrodistribucija_sifra_pj = v_sifra_pj;

DBMS_OUTPUT.PUT_LINE('Prosečna dnevna isporuka struje za


elektrodistribucijsku jedinicu ' || v_sifra_pj || ' iznosi ' || v_prosecna_isporuka
|| ' kW.');
END LOOP;
END;

--10. Prosečna količina uglja isporučena termoelektranama za određeni datum


DECLARE
v_datum DATE := TO_DATE('2023-01-03', 'YYYY-MM-DD');
v_prosecna_isporuka INTEGER;
BEGIN
SELECT AVG(kolicina)
INTO v_prosecna_isporuka
FROM isporuka_uglja
WHERE datum = v_datum;

DBMS_OUTPUT.PUT_LINE('Prosečna isporuka uglja za datum ' || v_datum || ' iznosi


' || v_prosecna_isporuka || ' tona.');
END;

You might also like