AleksaLjujic

Untitled

Oct 4th, 2025
285
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 5.93 KB | Software | 0 0
  1.  
  2.  
  3. 1. Prikazati spojeno ime i prezime, kao i grad za sve polaznike čije se
  4. prezime završava na „lovic“ i koji imaju manje od 29 godina.
  5.  
  6. SELECT (IME ||' '|| PREZIME) AS "IME I PREZIME", GRAD
  7. FROM POLAZNIK
  8. WHERE LOWER(PREZIME) LIKE '%lovic'
  9.  
  10. ########################################################
  11.  
  12. 2. Prikazati ID i naziv kursa i jezik (format jezika videti na slici)
  13. za sve kurseve koji se slušaju na engleskom jeziku i koji su se
  14. završili (održali) pre više od 9 godina.  
  15. NAPOMENA: Zahtev realizovati korišćenjem podupita.
  16.  
  17. SELECT KURSID, NAZIVKURSA, SUBSTR(JEZIK,1,3) ||'.' AS JEZIK
  18. FROM KURS
  19. WHERE JEZIK LIKE 'engleski' AND KURSID IN (SELECT KURSID
  20.                 FROM TERMIN
  21.                 WHERE DATUMOD + INTERVAL '9' YEAR < SYSDATE);
  22.  
  23. ########################################################
  24.  
  25. 3. Prikazati broj kurseva i broj različitih oblasti po jezicima na kojima se slušaju.
  26. U rezultatu ne treba prikazivati
  27. kurseve koji se slušaju na srpskom jeziku i koji imaju tri ili više različitih oblasti.
  28.  
  29. SELECT COUNT(*) AS BROJ_KURSEVA, COUNT(DISTINCT OBLAST) AS BROJ_OBLASTI
  30. FROM KURS
  31. WHERE JEZIK NOT LIKE 'srp%'
  32. GROUP BY JEZIK HAVING COUNT(DISTINCT OBLAST) < 3
  33.  
  34. ########################################################
  35.  
  36. 4.Prikazati id kursa, naziv kursa i broj različitih predavača za
  37. sve kurseve čija je najmanja cena veća od svih
  38. prosečnih cena kurseva čiji termini se održavaju u učionici B020.
  39.  
  40. SELECT K.KURSID, K.NAZIVKURSA, COUNT(DISTINCT T.PREDAVAC)
  41. FROM KURS K JOIN TERMIN T ON K.KURSID = T.KURSID
  42. GROUP BY K.KURSID, K.NAZIVKURSA
  43. HAVING MIN(T.CENA) > (SELECT AVG(T1.CENA)
  44.                     FROM TERMIN T1
  45.                     WHERE T1.BROJUCIONICE = 'B020');
  46.  
  47. ########################################################
  48.  
  49. 5. Prikazati id kursa, datum početka termina i naziv kursa i broj
  50. prijavljenih kandidata po terminu, broj ispravnih
  51. prijava (prijava pre početka termina) i broj
  52. neispravnih prijava (prijava posle početka termina) za sve kurseve
  53. jezika.
  54.  
  55. SELECT K.KURSID, T.DATUMOD, K.NAZIVKURSA, COUNT(*) AS BROJ_PRIJAVLJENIH,
  56.         SUM(CASE WHEN P.DATUMPRIJAVE < T.DATUMOD THEN 1 ELSE 0 END) AS BROJ_ISPRAVNIH,
  57.         SUM(CASE WHEN P.DATUMPRIJAVE > T.DATUMOD THEN 1 ELSE 0 END) AS BROJ_NEISPRAVNIH
  58. FROM TERMIN T JOIN KURS K ON K.KURSID = T.KURSID
  59. JOIN PRIJAVA P ON (T.DATUMOD,T.KURSID) = (P.DATUMOD,P.KURSID)
  60. WHERE K.OBLAST = 'Programiranje'
  61. GROUP BY K.KURSID, T.DATUMOD, K.NAZIVKURSA;
  62.  
  63. ########################################################
  64.  
  65. 6. Pronaći šifre svih kurseva koji se mogu dobiti kao
  66. gratis kursevi za kurs ‘C#’ (uzeti u obzir i gratis kurseve
  67. njegovog gratis kursa itd.).
  68.  
  69. WITH GRATIS_KURSEVI(GRATIS_KURS) AS
  70. (
  71.     SELECT KURSGRATIS
  72.     FROM KURS
  73.     WHERE NAZIVKURSA = 'Programiranje u C#'
  74.         UNION ALL
  75.     SELECT KURSGRATIS
  76.     FROM KURS K JOIN GRATIS_KURSEVI GK ON K.KURSID = GK.GRATIS_KURS
  77.     WHERE KURSGRATIS IS NOT NULL
  78. )
  79.  
  80. SELECT *
  81. FROM GRATIS_KURSEVI
  82.  
  83. ########################################################
  84.  
  85. 7. Prikazati ime, prezime polaznika, cenu termina i inicijale
  86. imena i prezimena predavača za koji se polaznik
  87. odlučio, kao i TO da li je polazniku prošao rođendan u tekućoj
  88. godini za sve polaznike koji imaju više od 26 ipo godina.  
  89.  
  90. I NACIN:
  91.  
  92. SELECT PO.IME, PO.PREZIME, T.CENA,
  93.         CONCAT(SUBSTR(P.IME,1,1),SUBSTR(P.PREZIME,1,1)) AS INICIJALI,
  94.         CASE
  95.             WHEN EXTRACT(MONTH FROM DATUMRODJENJA) < EXTRACT(MONTH FROM SYSDATE)
  96.              OR EXTRACT(DAY FROM DATUMRODJENJA) <= EXTRACT(DAY FROM SYSDATE)
  97.                     AND EXTRACT(MONTH FROM DATUMRODJENJA) = EXTRACT(MONTH FROM SYSDATE)
  98.                 THEN 'PROSAO RODJENDAN'
  99.             ELSE 'NIJE PROSAO RODJENDAN'
  100.             END AS RODJENDAN
  101. FROM POLAZNIK PO JOIN PRIJAVA PR ON PO.POLAZNIKID = PR.POLAZNIKID
  102. JOIN TERMIN T ON (PR.DATUMOD,PR.KURSID) = (T.DATUMOD,T.KURSID)
  103. JOIN PREDAVAC P ON T.PREDAVAC = P.PREDAVACID
  104. WHERE MONTHS_BETWEEN(SYSDATE, PO.DATUMRODJENJA)/12 > 26.5;
  105.  
  106. ---------------------------------------------------------
  107.  
  108. II NACIN:
  109.  
  110. SELECT PO.IME, PO.PREZIME, T.CENA,
  111.         CONCAT(SUBSTR(P.IME,1,1),SUBSTR(P.PREZIME,1,1)) AS INICIJALI,
  112.         CASE
  113.             WHEN EXTRACT(MONTH FROM DATUMRODJENJA) < EXTRACT(MONTH FROM SYSDATE)
  114.                  THEN 'PROSAO RODJENDAN'
  115.             WHEN EXTRACT(MONTH FROM DATUMRODJENJA) > EXTRACT(MONTH FROM SYSDATE)
  116.                  THEN 'NIJE PROSAO RODJENDAN'
  117.             WHEN EXTRACT(DAY FROM DATUMRODJENJA) <= EXTRACT(DAY FROM SYSDATE)
  118.                  THEN 'PROSAO RODJENDAN'
  119.             ELSE 'NIJE PROSAO RODJENDAN'
  120.         END AS RODJENDAN
  121. FROM POLAZNIK PO JOIN PRIJAVA PR ON PO.POLAZNIKID = PR.POLAZNIKID
  122. JOIN TERMIN T ON (PR.DATUMOD,PR.KURSID) = (T.DATUMOD,T.KURSID)
  123. JOIN PREDAVAC P ON T.PREDAVAC = P.PREDAVACID
  124. WHERE MONTHS_BETWEEN(SYSDATE, PO.DATUMRODJENJA)/12 > 26.5;
  125.  
  126. ########################################################
  127.  
  128. 8. Prikazati naziv kurseva i broj termina za kurseve za sve termine
  129. koji imaju gratis kurs i čija je minimalna cena
  130. manja od svih cena termina čije su prijave
  131. realizovane u septembru ili oktobru.
  132.  
  133. SELECT K.NAZIVKURSA, COUNT(*) AS BROJ_TERMINA
  134. FROM KURS K JOIN TERMIN T ON K.KURSID = T.KURSID
  135. WHERE K.KURSGRATIS IS NOT NULL
  136. GROUP BY K.NAZIVKURSA
  137. HAVING MIN(T.CENA) < (SELECT MIN(T.CENA)
  138.                         FROM TERMIN T JOIN PRIJAVA PR ON (T.KURSID,T.DATUMOD)=(PR.KURSID,PR.DATUMOD)
  139.                         WHERE EXTRACT(MONTH FROM PR.DATUMPRIJAVE) IN (9,10));
  140.  
  141.  
  142. ########################################################
  143.  
  144. 9.Prikazati id kursa, id predavača, ukupne cene termina
  145. prema predavačima i kursevima, ali i zbirno prema
  146. kursevima, kao i ukupnu cenu svih termina za termine
  147. u kojima ime predavača počinje na slovo J.
  148.  
  149. SELECT K.KURSID, T.PREDAVAC, SUM(T.CENA)
  150. FROM KURS K JOIN TERMIN T ON K.KURSID = T.KURSID
  151. JOIN PREDAVAC P ON T.PREDAVAC = P.PREDAVACID
  152. WHERE P.IME LIKE 'J%'
  153. GROUP BY ROLLUP( K.KURSID, T.PREDAVAC)
Advertisement
Add Comment
Please, Sign In to add comment