You are on page 1of 10

PONEDELJAK 29.11.2004.

VOZILO(SifraVozila, TipVozila)
LINIJA(BrojLinije, PolaznaStanica, DolaznaStanica)
STANICA(SifraStanice, NazivStanice)
RUTA(BrojLinije, SifraStanice, RB)
POLAZAK(SifraVozila, BrojLinije, DatumVreme, Status)

TipVozila in (‘Autobus’, ‘Tramvaj’, ‘Trolejbus’);


Status in ('Uspesan', 'Otkazan', 'Kasnjenje');
RB u ruti definise redosled stanica na liniji;

a) Kreirati pogled Dnevni_raspored_polazaka


(BROJLINIJE, TIPVOZILA, NAZIV_POLAZNE_STANICE,
NAZIV_DOLAZNE_STANICE, UKUPAN_BROJ_POLAZAKA) kojim se
prikazuje planirani dnevni izlazak vozila za tekući
datum.
VOZILO(SifraVozila, TipVozila)
LINIJA(BrojLinije, PolaznaStanica, DolaznaStanica)
STANICA(SifraStanice, NazivStanice)
RUTA(BrojLinije, SifraStanice, RB)
POLAZAK(SifraVozila, BrojLinije, DatumVreme, Status)

CREATE VIEW DnevniRasporedPolazaka


(BROJLINIJE, TIPVOZILA, NAZIV_POLAZNE_STANICE,
NAZIV_DOLAZNE_STANICE, UKUPAN_BROJ_POLAZAKA) AS
SELECT L.BROJLINIJE, V.TIPVOZILA, S1.NAZIVSTANICE,
S2.NAZIVSTANICE, COUNT(P.DATUMVREME)AS BROJ_VOZILA
FROM LINIJA L INNER JOIN STANICA S1 ON
L.POLAZNASTANICA = S1.SIFRASTANICE
INNER JOIN STANICA S2 ON L.DOLAZNASTANICA =
S2.SIFRASTANICE
INNER JOIN POLAZAK P ON L.BROJLINIJE = P.BROJLINIJE
INNER JOIN VOZILO V ON V.SIFRAVOZILA = P.SIFRAVOZILA
WHERE P.DATUMVREME = CURRENT_DATE
GROUP BY L.BROJLINIJE, V.TIPVOZILA, S1.NAZIVSTANICE,
S2.NAZIVSTANICE;
PONEDELJAK 29.11.2004.
VOZILO(SifraVozila, TipVozila)
LINIJA(BrojLinije, PolaznaStanica, DolaznaStanica)
STANICA(SifraStanice, NazivStanice)
RUTA(BrojLinije, SifraStanice, RB)
POLAZAK(SifraVozila, BrojLinije, DatumVreme, Status)

b)Prikazuje sve podatke o liniji, dan i broj polazaka za


liniju koja je imala najmanje polazaka iz skupa maksimalno
realizovanih linija po danima u mesecu Januaru tekuće godine.
Maksimalno realizovana linija za neki konkretan dan je ona
koja ima najveći broj realizovanih polazaka.
SELECT
MIN(C.BROJ_POLAZAKA) AS BR_POLAZAKA
FROM (
SELECT EXTRACT(MONTH FROM P.DATUMVREME) AS MESEC,
EXTRACT (DAY FROM P.DATUMVREME) AS DAN,
L.BROJLINIJE AS BR_LINIJE, L.POLAZNASTANICA AS POLAZNA,
L.DOLAZNASTANICA AS DOLAZNA,
COUNT(P.DATUMVREME) AS BROJ_POLAZAKA
FROM POLAZAK P INNER JOIN LINIJA L ON P.BROJLINIJE = L.BROJLINIJE
WHERE EXTRACT(MONTH FROM P.DATUMVREME) = 1
AND EXTRACT(YEAR FROM P.DATUMVREME) = EXTRACT(YEAR FROM CURRENT_DATE)
AND P.STATUS= 'USPESAN'
GROUP BY EXTRACT(MONTH FROM P.DATUMVREME), EXTRACT(DAY FROM P.DATUMVREME),
L.BROJLINIJE, L.POLAZNASTANICA, L.DOLAZNASTANICA

HAVING COUNT(P.DATUMVREME) > = ALL

(SELECT COUNT(DATUMVREME)
FROM POLAZAK
WHERE (STATUS = 'USPESAN'
AND EXTRACT (DAY FROM P.DATUM_VREME)=
EXTRACT (DAY FROM DATUM_VREME)
EXTRACT (MONTH FROM P.DATUM_VREME)=
EXTRACT (MONTH FROM DATUM_VREME)
EXTRACT (YEAR FROM P.DATUM_VREME) =
EXTRACT (YEAR FROM DATUM_VREME)
GROUP BY EXTRACT (MONTH FROM DATUMVREME), EXTRACT(DAY FROM DATUMVREME),
EXTRACT (YEAR FROM DATUM_VREME), BROJLINIJE) ) AS C;
c)Daje pregled po kvartalima, pa po tipovima vozila, ukupan
broj planiranih polazaka, broj uspesnih polazaka, broj
neuspesnih polazaka i broj polazaka sa kasnjenjem za 2004
godinu.
SELECT (CASE WHENEXTRACT (MONTH FROM P.DATUMVREME)IN (1,2,3) THEN '1'
WHENEXTRACT (MONTH FROM P.DATUMVREME)IN (4,5,6) THEN '2'
WHENEXTRACT (MONTH FROM P.DATUMVREME)IN (7,8,9) THEN '3'
WHENEXTRACT(MONTH FROM P.DATUMVREME)IN (10,11,12) THEN
'4'END)AS KVARTAL,
V.TIPVOZILA, COUNT(*)AS UKUPAN_BROJ_PLANIRANIH_POLAZAKA,

SUM(CASE WHEN P.STATUS ='USPESAN'THEN 1 ELSE 0 END)AS BROJ_USPESNIH,

SUM(CASE WHEN P.STATUS ='OTKAZAN'THEN 1 ELSE 0 END)AS BROJ_OTKAZANIH,

SUM(CASE WHEN P.STATUS ='KASNJENJE'THEN 1 ELSE 0 END)AS BR_POL_SA_KASNJ

FROM POLAZAK P INNER JOIN VOZILO V ON P.SIFRAVOZILA = V.SIFRAVOZILA

WHERE EXTRACT (YEAR FROM P.DATUMVREME) = 2004

GROUP BY CASE WHEN EXTRACT(MONTH FROM P.DATUMVREME) IN (1,2,3) THEN '1'


WHEN EXTRACT(MONTH FROM P.DATUMVREME) IN (4,5,6) THEN '2'
WHEN EXTRACT(MONTH FROM P.DATUMVREME) IN (7,8,9)THEN '3'
WHEN EXTRACT(MONTH FROM P.DATUMVREME) IN (10,11,12) THEN
'4' END, V.TIPVOZILA;
AERODROM(AEROID, NAZIV, MESTO)
LINIJA(LINIJAID,POLAZNI_AERO, ODREDISNI_AERO)
LET(LINIJAID,DATUMiVREME, AVIONID)
AVION (AVIONID, OZNAKA, TIPAVIONA, BROJ_SEDISTA)
REZERVACIJA(LINIJAID,DATUMiVREME, RBR, STATUS)

a)Kreira pogled SLOBODNA_MESTA sa atributima LINIJA,


VREME_POLASKA, BROJ_SLOBODNIH_MESTA kojima se prikazuje oznaka
linije, datum i vreme polaska i broj slobodnih mesta za sve
letove za “PARIZ” u periodu 10.02.2002 do 14.02.2002. godine.
CREATE VIEW SLOBODNA_MESTA
(LINIJA,VREME_POLASKA,BROJ_SLOBODNIH_MESTA) AS
SELECT L.LINIJAID,
L.DATUM_VREME,
(A.BROJ_SEDISTA - COUNT(R.RBR))
FROM LET L LEFT OUTER JOIN AVION A ON L.AVIONID = A.AVIONID
LEFT OUTER JOIN REZERVACIJA R
ON L.LINIJAID = R.LINIJAID AND L.DATUM_VREME = R.DATUM_VREME
LEFT OUTER JOIN LINIJA LIN
ON L.LINIJAID = LIN.LINIJAID
WHERE LIN.LINIJAID IN (SELECT LINIJAID
FROM LINIJA
WHERE ODREDISNI_AERO IN(SELECT AEROID
FROM AERODROM
WHERE MESTO = 'Pariz'))
AND L.DATUM_VREME >'2004-02-10' AND L.DATUM_VREME < '2004-02-14'
GROUP BY L.LINIJAID,L.DATUM_VREME, A.BROJ_SEDISTA
AERODROM(AEROID, NAZIV, MESTO)
LINIJA(LINIJAID,POLAZNI_AERO, ODREDISNI_AERO)
LET(LINIJAID,DATUMiVREME, AVIONID)
AVION (AVIONID, OZNAKA, TIPAVIONA, BROJ_SEDISTA)
REZERVACIJA(LINIJAID,DATUMiVREME, RBR, STATUS)

b)Otkazati (izbrisati) sve rezervacije za odredisni


aerodrom sa nazivom “Paris-Orly” koje su u statusu
“NEPLACENA” za sve letove cije je vreme polaska u
narednih 12 casova.
DELETE FROM REZERVACIJA
WHERE STATUS = 'NEPLACENA'
AND DATUM_VREME - INTERVAL '12' HOUR < CURRENT_TIMESTAMP
AND LINIJAID IN
(SELECT L.LINIJAID
FROM LINIJA L INNER JOIN AERODROM A ON
L.ODREDISNI_AERO = A.AEROID
WHERE A.NAZIV = 'Paris-Orly');
c)Napisati DDL naredbe kojima se kreiraju tabele AERODROM i
LINIJA. Definisati i referencijalna ograničenja za te tabele.
AERODROM(AEROID, NAZIV, MESTO)
LINIJA(LINIJAID,POLAZNI_AERO, ODREDISNI_AERO)

CREATE TABLE AERODROM


( AEROID INTEGER NOT NULL,
NAZIV VARCHAR(20) NOT NULL,
MESTO VARCHAR(20) NOT NULL
CONSTRAINT AERODROM_PR PRIMARY KEY (AEROID)
);
CREATE TABLE LINIJA
( LINIJAID INTEGER PRIMARY KEY,
POLAZNI_AERO INTEGER
ODREDISNI_AERO INTEGER
CONSTRAINT POLAZNI_AERO_FK
REFERENCES AERODROM (AEROID),
CONSTRAINT ODREDISNI_AERO_FK
REFERENCES AERODROM (AEROID)
);

You might also like