1. Prikazati spojeno ime i prezime, kao i grad za sve polaznike čije se prezime završava na „lovic“ i koji imaju manje od 29 godina. SELECT (IME ||' '|| PREZIME) AS "IME I PREZIME", GRAD FROM POLAZNIK WHERE LOWER(PREZIME) LIKE '%lovic' ######################################################## 2. Prikazati ID i naziv kursa i jezik (format jezika videti na slici) za sve kurseve koji se slušaju na engleskom jeziku i koji su se završili (održali) pre više od 9 godina. NAPOMENA: Zahtev realizovati korišćenjem podupita. SELECT KURSID, NAZIVKURSA, SUBSTR(JEZIK,1,3) ||'.' AS JEZIK FROM KURS WHERE JEZIK LIKE 'engleski' AND KURSID IN (SELECT KURSID FROM TERMIN WHERE DATUMOD + INTERVAL '9' YEAR < SYSDATE); ######################################################## 3. Prikazati broj kurseva i broj različitih oblasti po jezicima na kojima se slušaju. U rezultatu ne treba prikazivati kurseve koji se slušaju na srpskom jeziku i koji imaju tri ili više različitih oblasti. SELECT COUNT(*) AS BROJ_KURSEVA, COUNT(DISTINCT OBLAST) AS BROJ_OBLASTI FROM KURS WHERE JEZIK NOT LIKE 'srp%' GROUP BY JEZIK HAVING COUNT(DISTINCT OBLAST) < 3 ######################################################## 4.Prikazati id kursa, naziv kursa i broj različitih predavača za sve kurseve čija je najmanja cena veća od svih prosečnih cena kurseva čiji termini se održavaju u učionici B020. SELECT K.KURSID, K.NAZIVKURSA, COUNT(DISTINCT T.PREDAVAC) FROM KURS K JOIN TERMIN T ON K.KURSID = T.KURSID GROUP BY K.KURSID, K.NAZIVKURSA HAVING MIN(T.CENA) > (SELECT AVG(T1.CENA) FROM TERMIN T1 WHERE T1.BROJUCIONICE = 'B020'); ######################################################## 5. Prikazati id kursa, datum početka termina i naziv kursa i broj prijavljenih kandidata po terminu, broj ispravnih prijava (prijava pre početka termina) i broj neispravnih prijava (prijava posle početka termina) za sve kurseve jezika. SELECT K.KURSID, T.DATUMOD, K.NAZIVKURSA, COUNT(*) AS BROJ_PRIJAVLJENIH, SUM(CASE WHEN P.DATUMPRIJAVE < T.DATUMOD THEN 1 ELSE 0 END) AS BROJ_ISPRAVNIH, SUM(CASE WHEN P.DATUMPRIJAVE > T.DATUMOD THEN 1 ELSE 0 END) AS BROJ_NEISPRAVNIH FROM TERMIN T JOIN KURS K ON K.KURSID = T.KURSID JOIN PRIJAVA P ON (T.DATUMOD,T.KURSID) = (P.DATUMOD,P.KURSID) WHERE K.OBLAST = 'Programiranje' GROUP BY K.KURSID, T.DATUMOD, K.NAZIVKURSA; ######################################################## 6. Pronaći šifre svih kurseva koji se mogu dobiti kao gratis kursevi za kurs ‘C#’ (uzeti u obzir i gratis kurseve njegovog gratis kursa itd.). WITH GRATIS_KURSEVI(GRATIS_KURS) AS ( SELECT KURSGRATIS FROM KURS WHERE NAZIVKURSA = 'Programiranje u C#' UNION ALL SELECT KURSGRATIS FROM KURS K JOIN GRATIS_KURSEVI GK ON K.KURSID = GK.GRATIS_KURS WHERE KURSGRATIS IS NOT NULL ) SELECT * FROM GRATIS_KURSEVI ######################################################## 7. Prikazati ime, prezime polaznika, cenu termina i inicijale imena i prezimena predavača za koji se polaznik odlučio, kao i to da li je polazniku prošao rođendan u tekućoj godini za sve polaznike koji imaju više od 26 ipo godina. I NACIN: SELECT PO.IME, PO.PREZIME, T.CENA, CONCAT(SUBSTR(P.IME,1,1),SUBSTR(P.PREZIME,1,1)) AS INICIJALI, CASE WHEN EXTRACT(MONTH FROM DATUMRODJENJA) < EXTRACT(MONTH FROM SYSDATE) OR EXTRACT(DAY FROM DATUMRODJENJA) <= EXTRACT(DAY FROM SYSDATE) AND EXTRACT(MONTH FROM DATUMRODJENJA) = EXTRACT(MONTH FROM SYSDATE) THEN 'PROSAO RODJENDAN' ELSE 'NIJE PROSAO RODJENDAN' END AS RODJENDAN FROM POLAZNIK PO JOIN PRIJAVA PR ON PO.POLAZNIKID = PR.POLAZNIKID JOIN TERMIN T ON (PR.DATUMOD,PR.KURSID) = (T.DATUMOD,T.KURSID) JOIN PREDAVAC P ON T.PREDAVAC = P.PREDAVACID WHERE MONTHS_BETWEEN(SYSDATE, PO.DATUMRODJENJA)/12 > 26.5; --------------------------------------------------------- II NACIN: SELECT PO.IME, PO.PREZIME, T.CENA, CONCAT(SUBSTR(P.IME,1,1),SUBSTR(P.PREZIME,1,1)) AS INICIJALI, CASE WHEN EXTRACT(MONTH FROM DATUMRODJENJA) < EXTRACT(MONTH FROM SYSDATE) THEN 'PROSAO RODJENDAN' WHEN EXTRACT(MONTH FROM DATUMRODJENJA) > EXTRACT(MONTH FROM SYSDATE) THEN 'NIJE PROSAO RODJENDAN' WHEN EXTRACT(DAY FROM DATUMRODJENJA) <= EXTRACT(DAY FROM SYSDATE) THEN 'PROSAO RODJENDAN' ELSE 'NIJE PROSAO RODJENDAN' END AS RODJENDAN FROM POLAZNIK PO JOIN PRIJAVA PR ON PO.POLAZNIKID = PR.POLAZNIKID JOIN TERMIN T ON (PR.DATUMOD,PR.KURSID) = (T.DATUMOD,T.KURSID) JOIN PREDAVAC P ON T.PREDAVAC = P.PREDAVACID WHERE MONTHS_BETWEEN(SYSDATE, PO.DATUMRODJENJA)/12 > 26.5; ######################################################## 8. Prikazati naziv kurseva i broj termina za kurseve za sve termine koji imaju gratis kurs i čija je minimalna cena manja od svih cena termina čije su prijave realizovane u septembru ili oktobru. SELECT K.NAZIVKURSA, COUNT(*) AS BROJ_TERMINA FROM KURS K JOIN TERMIN T ON K.KURSID = T.KURSID WHERE K.KURSGRATIS IS NOT NULL GROUP BY K.NAZIVKURSA HAVING MIN(T.CENA) < (SELECT MIN(T.CENA) FROM TERMIN T JOIN PRIJAVA PR ON (T.KURSID,T.DATUMOD)=(PR.KURSID,PR.DATUMOD) WHERE EXTRACT(MONTH FROM PR.DATUMPRIJAVE) IN (9,10)); ######################################################## 9.Prikazati id kursa, id predavača, ukupne cene termina prema predavačima i kursevima, ali i zbirno prema kursevima, kao i ukupnu cenu svih termina za termine u kojima ime predavača počinje na slovo J. SELECT K.KURSID, T.PREDAVAC, SUM(T.CENA) FROM KURS K JOIN TERMIN T ON K.KURSID = T.KURSID JOIN PREDAVAC P ON T.PREDAVAC = P.PREDAVACID WHERE P.IME LIKE 'J%' GROUP BY ROLLUP( K.KURSID, T.PREDAVAC)