AleksaLjujic

Untitled

Oct 4th, 2025
450
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 23.43 KB | Software | 0 0
  1. ################################################
  2. ############### SQL UPITI ######################
  3. ################################################
  4.  
  5. 1. SLEKTUJ IME, RPEZIME, GODINU, MESEC I DAN RODJENJA
  6. KOD STUDENATA STARIJIH OD 2001 GENERACIJE
  7.  
  8. ------------------------------------------------
  9.  
  10. SELECT IME, PREZIME,
  11.        EXTRACT(YEAR FROM DATUMRODJENJA) AS GODINA,
  12.        EXTRACT(MONTH FROM DATUMRODJENJA) AS MESEC ,
  13.        EXTRACT(DAY FROM DATUMRODJENJA) AS DAN
  14. FROM STUDENT
  15. WHERE EXTRACT(YEAR FROM DATUMRODJENJA) < 2001
  16.  
  17. ################################################
  18.  
  19. 2. SELEKTUJ IME, PREZIME, INICIJALE I POLOZAJ PRVOG POJAVLJIVANJA SLOVA A
  20. KOD STUDENATA CIJE JE PREZIME DUZE OD 9 SLOVA I ZAVRSAVA SE NA IC
  21.  
  22. ------------------------------------------------
  23.  
  24. SELECT IME, PREZIME,
  25.        CONCAT(SUBSTR(IME,1,1),'.',SUBSTR(PREZIME,1,1),'.'),
  26.        INSTR(LOWER(PREZIME),'a')
  27. FROM STUDENT
  28. WHERE LENGTH(PREZIME) > 9 AND LOWER(PREZIME) LIKE '%i%c'
  29.  
  30. ################################################
  31.  
  32. 3.Prikazati indeks ime i prezime svih sutdenata koji
  33. imaju mentora koji se zove Ivan.
  34.  
  35. ------------------------------------------------
  36.  
  37. SELECT BROJINDEKSA, IME, PREZIME, MENTOR
  38. FROM STUDENT
  39. WHERE MENTOR IN (SELECT SIFRANASTAVNIKA
  40.         FROM NASTAVNIK
  41.         WHERE IME LIKE 'Ivan')
  42.  
  43. ################################################
  44.  
  45. 4. Prikazati sifru predmdeta, naziv i broj ESPB poena
  46. za sve predmete ciji je broj ESPB manji do 5 I nemaju
  47. nijedan predmet kao uslov
  48.  
  49. ------------------------------------------------
  50.  
  51. SELECT SIFRAPREDMETA,NAZIV, ESPB
  52. FROM PREDMET
  53. WHERE ESPB < 5 AND USLOV IS NULL
  54.  
  55. ################################################
  56.  
  57. 5.
  58.  
  59. ------------------------------------------------
  60.  
  61. SELECT BROJINDEKSA, IME, PREZIME, SIFRAMODULA
  62. FROM STUDENT
  63. WHERE SKOLARINA > 150000 AND SIFRAMODULA NOT IN (9,11,12,14)
  64. AND IME NOT LIKE 'Jovan'
  65.  
  66. ################################################
  67.  
  68. 6.
  69.  
  70. ------------------------------------------------
  71.  
  72. SELECT *
  73. FROM POLAGANJE
  74. WHERE GODINA = 2022 AND REDNIBROJ = 9
  75. AND (OCENA BETWEEN 8 AND 10)
  76. ORDER BY OCENA ASC
  77.  
  78. ################################################
  79.  
  80. 7.
  81.  
  82. ------------------------------------------------
  83.  
  84. SELECT IME, PREZIME
  85. FROM STUDENT
  86. WHERE SIFRAMODULA = (SELECT SIFRAPROFILA
  87.                     FROM MODUL
  88.                     WHERE KVOTA = 180)
  89.  
  90. ################################################
  91.  
  92. 8.
  93.  
  94. ------------------------------------------------
  95.  
  96. SELECT MESEC, DATUMPOCETKA, DATUMZAVRSETKA, (DATUMZAVRSETKA - DATUMPOCETKA) AS BROJ_DANA,
  97.         NEXT_DAY(DATUMPOCETKA,'wednesday') AS PRVA_SREDAM,
  98.         ROUND(MONTHS_BETWEEN(SYSDATE, DATUMZAVRSETKA),2) AS BROJ_MESECI
  99. FROM ISPITNIROK
  100. WHERE GODINA = 2023
  101.  
  102. ################################################
  103.  
  104. 9.
  105.  
  106. ------------------------------------------------
  107.  
  108. SELECT *
  109. FROM POLAGANJE
  110. WHERE OCENA = 5 AND DATUMPOLAGANJA + INTERVAL '1-9' YEAR TO MONTH > SYSDATE
  111.  
  112. ################################################
  113.  
  114. 10.
  115.  
  116. ------------------------------------------------
  117.  
  118. SELECT GODINA, MESEC,
  119.        CASE
  120.             WHEN EXTRACT(MONTH FROM DATUMPOCETKA) = 1  THEN 'Januarski'
  121.             WHEN EXTRACT(MONTH FROM DATUMPOCETKA) = 2  THEN 'Februarski'
  122.             WHEN EXTRACT(MONTH FROM DATUMPOCETKA) = 3  THEN 'Martovski'
  123.             WHEN EXTRACT(MONTH FROM DATUMPOCETKA) = 4  THEN 'Aprilski'
  124.             WHEN EXTRACT(MONTH FROM DATUMPOCETKA) = 5  THEN 'Majski'
  125.             WHEN EXTRACT(MONTH FROM DATUMPOCETKA) = 6  THEN 'Junski'
  126.             WHEN EXTRACT(MONTH FROM DATUMPOCETKA) = 7  THEN 'Julski'
  127.             WHEN EXTRACT(MONTH FROM DATUMPOCETKA) = 8  THEN 'Avgustovski'
  128.             WHEN EXTRACT(MONTH FROM DATUMPOCETKA) = 9  THEN 'Septembarski'
  129.             WHEN EXTRACT(MONTH FROM DATUMPOCETKA) = 10 THEN 'Oktobarski'
  130.             WHEN EXTRACT(MONTH FROM DATUMPOCETKA) = 11 THEN 'Novembarski'
  131.             WHEN EXTRACT(MONTH FROM DATUMPOCETKA) = 12 THEN 'Decembarski'
  132.             ELSE 'NeodreΔ‘en'
  133.         END AS NAZIV
  134. FROM ISPITNIROK
  135. WHERE TIP LIKE 'apsol%' AND GODINA IN (2023, 2024)
  136.  
  137. ################################################
  138.  
  139. 11.
  140.  
  141. ------------------------------------------------
  142.  
  143. SELECT IME, PREZIME, LENGTH(IME) AS D_IME, LENGTH(PREZIME) AS D_PREZIME,
  144.         NULLIF(LENGTH(IME),LENGTH(PREZIME)) AS REZULTAT
  145. FROM NASTAVNIK
  146. WHERE TITULA IS NULL AND LENGTH(IME) < 6
  147.  
  148. ################################################
  149.  
  150. 12.
  151.  
  152. ------------------------------------------------
  153.  
  154. SELECT OCENA, COALESCE(DATUMUPISA, DATUMPOLAGANJA) AS REZULTAT
  155. FROM POLAGANJE
  156. WHERE SIFRAPREDMETA = 24
  157.  
  158. ################################################
  159.  
  160. 13.
  161.  
  162. ------------------------------------------------
  163.  
  164. SELECT BROJINDEKSA, IME, PREZIME, TO_CHAR(DATUMRODJENJA,'DD.MM.YYYY.') AS DATUM_RODEJNJA
  165. FROM STUDENT
  166. WHERE INSTR(TO_CHAR(BROJINDEKSA),'12')
  167.  
  168. ################################################
  169.  
  170. 14.
  171.  
  172. ------------------------------------------------
  173.  
  174. SELECT DATUMOD, DATUMDO, PLATA,
  175.         ROUND(MONTHS_BETWEEN(COALESCE(DATUMDO, ADD_MONTHS(SYSDATE,-3) ), DATUMOD)) AS BROJ_MESECI,
  176.         CASE TRUNC(MONTHS_BETWEEN(COALESCE(DATUMDO, ADD_MONTHS(SYSDATE,-3) ), DATUMOD)/12)
  177.             WHEN 0 THEN 'nema bonusa'
  178.             WHEN 1 THEN TO_CHAR(ROUND(PLATA*0.1))
  179.             WHEN 2 THEN TO_CHAR(ROUND(PLATA*0.2))
  180.             WHEN 3 THEN TO_CHAR(ROUND(PLATA*0.3))
  181.             ELSE TO_CHAR(ROUND(PLATA*0.4))
  182.         END AS BONUS,
  183.         CASE TRUNC(MONTHS_BETWEEN(COALESCE(DATUMDO, ADD_MONTHS(SYSDATE,-3) ), DATUMOD)/12)
  184.             WHEN 0 THEN '0'                    
  185.             WHEN 1 THEN '10%'
  186.             WHEN 2 THEN '20%'
  187.             WHEN 3 THEN '30%'
  188.             ELSE '40%'
  189.         END AS PROCENAT_BONUSA
  190. FROM ANGAZOVANJE
  191. WHERE PLATA >= 15000 AND PLATA <= 90000 AND DATUMOD + INTERVAL '5-8' YEAR TO MONTH > ADD_MONTHS(SYSDATE,-3)
  192. ORDER BY PROCENAT_BONUSA DESC, BONUS ASC
  193.  
  194. ################################################
  195.  
  196. 15. Prikazati sifru i naziv svih modula koji se nalaze na programu ISIT,
  197. a ciji naziv pocinje na slovo I.
  198.  
  199. ------------------------------------------------
  200.  
  201. I NACIN:
  202.  
  203. SELECT PR.SIFRAPROFILA, PR.NAZIVPROFILA
  204. FROM MODUL M
  205. INNER JOIN PROFIL P ON P.SIFRAPROFILA = M.SIFRAPROGRAMA
  206. INNER JOIN PROFIL PR ON PR.SIFRAPROFILA = M.SIFRAPROFILA
  207. WHERE P.NAZIVPROFILA LIKE 'ISIT' AND PR.NAZIVPROFILA LIKE 'I%'
  208.  
  209. ------------------------------------------------
  210.  
  211. II NACIN
  212.  
  213. SELECT SIFRAPROFILA, NAZIVPROFILA
  214. FROM PROFIL
  215. WHERE LOWER(NAZIVPROFILA) LIKE 'i%'
  216.         AND SIFRAPROFILA IN (SELECT SIFRAPROFILA
  217.                             FROM MODUL
  218.                             WHERE SIFRAPROGRAMA = (SELECT SIFRAPROFILA
  219.                                                   FROM PROFIL
  220.                                                   WHERE NAZIVPROFILA = 'ISIT'))
  221.  
  222. ################################################
  223.  
  224. 16.
  225.  
  226. ------------------------------------------------
  227.  
  228. I NACIN
  229.  
  230. SELECT S.BROJINDEKSA, S.IME, S.PREZIME, P.DATUMPOLAGANJA
  231. FROM STUDENT S
  232. INNER JOIN POLAGANJE P  ON S.BROJINDEKSA = P.BROJINDEKSA
  233. WHERE MOD(S.SKOLARINA,6) = 0
  234.  
  235. ------------------------------------------------
  236.  
  237. I NACIN
  238.  
  239. SELECT BROJINDEKSA, S.IME, S.PREZIME, P.DATUMPOLAGANJA
  240. FROM STUDENT S
  241. INNER JOIN POLAGANJE P USING (BROJINDEKSA)
  242. WHERE MOD(S.SKOLARINA,6) = 0
  243.  
  244.  
  245. ################################################
  246.  
  247. 17.
  248.  
  249. ------------------------------------------------
  250.  
  251. SELECT N.IME, N.PREZIME, P.NAZIV, A.PLATA, N.TITULA
  252. FROM NASTAVNIK N INNER JOIN ANGAZOVANJE A ON  A.SIFRANASTAVNIKA = N.SIFRANASTAVNIKA
  253. INNER JOIN PREDMET P ON A.SIFRAPREDMETA = P.SIFRAPREDMETA
  254. WHERE N.TITULA LIKE 'doktor' AND P.NAZIV LIKE 'O%'
  255.  
  256. ################################################
  257.  
  258. 18.
  259.  
  260. ------------------------------------------------
  261.  
  262. SELECT PO.*,I.MESEC
  263. FROM POLAGANJE PO
  264. INNER JOIN PREDMET PR ON PO.SIFRAPREDMETA = PR.SIFRAPREDMETA
  265. INNER JOIN ISPITNIROK I ON PO.REDNIBROJ = I.REDNIBROJ AND PO.GODINA = I.GODINA
  266. WHERE PR.NAZIV LIKE 'Osnove inf%' AND I.TIP LIKE 'apsolventski'
  267.  
  268. ################################################
  269.  
  270. 18.
  271.  
  272. ------------------------------------------------
  273.  
  274. I NACIN
  275.  
  276. SELECT S.IME, EXTRACT(YEAR FROM S.DATUMRODJENJA) AS GODINA_RODJENJA,
  277.         CONCAT(N.IME,' ', N.PREZIME) AS MENTOR
  278. FROM STUDENT S
  279. LEFT JOIN NASTAVNIK N ON S.MENTOR = N.SIFRANASTAVNIKA
  280. WHERE TRUNC(MONTHS_BETWEEN(SYSDATE,S.DATUMRODJENJA)/12)>=22
  281.  
  282. ------------------------------------------------
  283.  
  284. II NACIN
  285.  
  286. SELECT S.IME, EXTRACT(YEAR FROM S.DATUMRODJENJA) AS GODINA_RODJENJA,
  287.         CONCAT(N.IME,' ', N.PREZIME) AS MENTOR
  288. FROM STUDENT S
  289. LEFT JOIN NASTAVNIK N ON S.MENTOR = N.SIFRANASTAVNIKA
  290. WHERE S.DATUMRODJENJA + INTERVAL '22' YEAR < SYSDATE
  291.  
  292. ################################################
  293.  
  294. 19.
  295.  
  296. ------------------------------------------------
  297.  
  298. SELECT S.IME, EXTRACT(YEAR FROM S.DATUMRODJENJA) AS GODINA_RODJENJA,
  299.         CONCAT(N.IME,' ', N.PREZIME) AS MENTOR
  300. FROM STUDENT S
  301. LEFT JOIN NASTAVNIK N ON S.MENTOR = N.SIFRANASTAVNIKA
  302. WHERE LENGTH(N.PREZIME) = 12 OR N.PREZIME IS NULL
  303.  
  304. ################################################
  305.  
  306. 20.
  307.  
  308. ------------------------------------------------
  309.  
  310. SELECT S.IME, EXTRACT(YEAR FROM S.DATUMRODJENJA) AS GODINA_RODJENJA,
  311.         CONCAT(N.IME,' ', N.PREZIME) AS MENTOR
  312. FROM STUDENT S
  313. RIGHT JOIN NASTAVNIK N ON S.MENTOR = N.SIFRANASTAVNIKA
  314. WHERE LENGTH(N.IME) > 7
  315.  
  316. ################################################
  317.  
  318. 21.
  319.  
  320. ------------------------------------------------
  321.  
  322. SELECT S.IME, EXTRACT(YEAR FROM S.DATUMRODJENJA) AS GODINA_RODJENJA,
  323.         CONCAT(N.IME,' ', N.PREZIME) AS MENTOR
  324. FROM STUDENT S
  325. FULL JOIN NASTAVNIK N ON S.MENTOR = N.SIFRANASTAVNIKA
  326. WHERE LENGTH(S.IME) * 3 < LENGTH(S.PREZIME) OR S.IME IS NULL
  327.  
  328. ################################################
  329.  
  330. 22.
  331.  
  332. ------------------------------------------------
  333.  
  334. I NACIN:
  335.  
  336. SELECT PR.ESPB ||'-'|| SUBSTR(PR.NAZIV,1,3) AS INICIJALI, P.NAZIV
  337. FROM PREDMET PR
  338. LEFT JOIN PREDMET P ON PR.USLOV = P.SIFRAPREDMETA
  339. INNER JOIN POLAGANJE PO ON PR.SIFRAPREDMETA = PO.SIFRAPREDMETA
  340. WHERE PR.ESPB < 6
  341. HAVING LENGTH(COUNT(PO.SIFRAPREDMETA)) >= 1
  342. GROUP BY PR.ESPB, SUBSTR(PR.NAZIV,1,3), P.NAZIV
  343.  
  344. ------------------------------------------------
  345.  
  346. II NACIN:
  347.  
  348. SELECT PR.ESPB ||'-'|| SUBSTR(PR.NAZIV,1,3) AS INICIJALI, P.NAZIV
  349. FROM PREDMET PR
  350. LEFT JOIN PREDMET P ON PR.USLOV = P.SIFRAPREDMETA
  351. WHERE PR.ESPB < 6 AND PR.SIFRAPREDMETA IN ( SELECT SIFRAPREDMETA
  352.                                             FROM POLAGANJE PO)
  353.  
  354. ################################################
  355.  
  356. 23.
  357.  
  358. ------------------------------------------------
  359.  
  360.  
  361. SELECT N.IME ||' '|| N.PREZIME AS NASTAVNIK, P.NAZIV AS PREDMET
  362. FROM NASTAVNIK N
  363. INNER JOIN ANGAZOVANJE A ON N.SIFRANASTAVNIKA = A.SIFRANASTAVNIKA
  364. INNER JOIN PREDMET P ON P.SIFRAPREDMETA = A.SIFRAPREDMETA
  365. WHERE P.ESPB > 3 AND TITULA LIKE 'doktor'
  366.  
  367. ################################################
  368.  
  369. 24.
  370.  
  371. ------------------------------------------------
  372.  
  373. SELECT N.IME, N.PREZIME, P.NAZIV
  374. FROM NASTAVNIK N CROSS JOIN PREDMET P
  375. WHERE N.TITULA = 'doktor' AND P.ESPB > 3;
  376.  
  377. ################################################
  378.  
  379. 25.
  380.  
  381. ------------------------------------------------
  382.  
  383. SELECT N.SIFRANASTAVNIKA, N.PREZIME, A.SIFRAPREDMETA, A.PLATA
  384. FROM NASTAVNIK N INNER JOIN ANGAZOVANJE A ON N.SIFRANASTAVNIKA = A.SIFRANASTAVNIKA
  385. WHERE A.PLATA > ANY(
  386.         SELECT A.PLATA
  387.         FROM ANGAZOVANJE A
  388.         INNER JOIN PREDMET P ON A.SIFRAPREDMETA = P.SIFRAPREDMETA
  389.         WHERE P.NAZIV LIKE 'Osnove kvaliteta'
  390. )
  391.  
  392. ################################################
  393.  
  394. 26.
  395.  
  396. ------------------------------------------------
  397.  
  398. I NACIN:
  399.  
  400. SELECT S.BROJINDEKSA, S.PREZIME, S.SKOLARINA
  401. FROM STUDENT S
  402. WHERE S.SKOLARINA > ALL (
  403.                     SELECT ST.SKOLARINA
  404.                     FROM STUDENT ST
  405.                     WHERE ST.SKOLARINA IS NOT NULL AND
  406.                     ST.MENTOR = (SELECT M.SIFRANASTAVNIKA
  407.                                         FROM NASTAVNIK M
  408.                                         WHERE LOWER(M.IME) LIKE 'anita'));
  409.  
  410. ------------------------------------------------
  411.  
  412. II NACIN:
  413.  
  414. SELECT S.BROJINDEKSA, S.PREZIME
  415. FROM STUDENT S
  416. WHERE S.SKOLARINA > ALL (
  417.                     SELECT ST.SKOLARINA
  418.                     FROM STUDENT ST
  419.                     INNER JOIN NASTAVNIK M ON ST.MENTOR = M.SIFRANASTAVNIKA
  420.                     WHERE M.IME LIKE 'Anita' AND ST.SKOLARINA IS NOT NULL);
  421.  
  422.  
  423. ################################################
  424.  
  425. 27.
  426.  
  427. ------------------------------------------------
  428.  
  429. SELECT S.*, P.NAZIVPROFILA
  430. FROM STUDENT S
  431. INNER JOIN PROFIL P ON P.SIFRAPROFILA = S.SIFRAMODULA
  432. INNER JOIN POLAGANJE PO ON S.BROJINDEKSA = PO.BROJINDEKSA
  433. WHERE (UPPER(P.NAZIVPROFILA) LIKE '%MEN%' OR P.SIFRAPROFILA NOT IN (SELECT SIFRAPROFILA FROM PROFIL))
  434. AND TO_NUMBER(SUBSTR(S.BROJINDEKSA,1,4)) < EXTRACT(YEAR FROM SYSDATE) - 2
  435. AND ADD_MONTHS(SYSDATE, -24) < PO.DATUMPOLAGANJA;
  436.  
  437.  
  438. ################################################
  439.  
  440. 28.
  441.  
  442. ------------------------------------------------
  443.  
  444. SELECT MIN(S.SKOLARINA) AS MIN_SKOALRINA,
  445.         MAX(S.SKOLARINA) AS MAX_SKOALRINA
  446. FROM STUDENT S
  447. WHERE S.SIFRAMODULA = 11;
  448.  
  449. ################################################
  450.  
  451. 29.
  452.  
  453. ------------------------------------------------
  454.  
  455. SELECT COUNT(*) AS BROJ_STUDENATA,
  456.             MIN(S.SKOLARINA) AS MIN_SKOLARINA,
  457.             ROUND(AVG(S.SKOLARINA),2) AS PROSECNA_SKOLARINA
  458. FROM STUDENT S
  459. WHERE S.MENTOR IS NOT NULL
  460.  
  461.  
  462. ################################################
  463.  
  464. 30.
  465.  
  466. ------------------------------------------------
  467.  
  468. SELECT SIFRAMODULA, MIN(SKOLARINA),MAX(SKOLARINA), COUNT(*)
  469. FROM STUDENT
  470. WHERE SIFRAMODULA IS NOT NULL
  471. GROUP BY SIFRAMODULA;
  472.  
  473. ################################################
  474.  
  475. 31.
  476.  
  477. ------------------------------------------------
  478.  
  479. SELECT IME, SKOLARINA
  480. FROM STUDENT
  481. WHERE SKOLARINA < (SELECT MAX(SKOLARINA)
  482.                     FROM STUDENT
  483.                     WHERE SIFRAMODULA = 10);
  484.  
  485.  
  486. ################################################
  487.  
  488. 32.
  489.  
  490. ------------------------------------------------
  491.  
  492. SELECT S.SIFRAMODULA, S.MENTOR,COUNT(*)
  493. FROM STUDENT S
  494. INNER JOIN PROFIL P ON S.SIFRAMODULA = P.SIFRAPROFILA
  495. WHERE S.MENTOR IS NOT NULL AND S.SKOLARINA IS NOT NULL
  496. AND LENGTH(P.NAZIVPROFILA) < 22
  497. GROUP BY S.SIFRAMODULA, S.MENTOR
  498.  
  499. ################################################
  500.  
  501. 33.
  502.  
  503. ------------------------------------------------
  504.  
  505. SELECT S.SIFRAMODULA, S.MENTOR, SUM(S.SKOLARINA)
  506. FROM STUDENT S
  507. GROUP BY S.SIFRAMODULA, S.MENTOR
  508. HAVING MAX(S.SKOLARINA)<100000;
  509.  
  510. ################################################
  511.  
  512. 34.
  513.  
  514. ------------------------------------------------
  515.  
  516. SELECT S.SIFRAMODULA,
  517.     EXTRACT(YEAR FROM S.DATUMRODJENJA) AS GODINA_RODJENJA,
  518.     COUNT(*) AS BROJ_STUDENATA
  519. FROM STUDENT S
  520. WHERE S.SKOLARINA IS NULL
  521. GROUP BY S.SIFRAMODULA, EXTRACT(YEAR FROM S.DATUMRODJENJA)
  522. HAVING COUNT(*) >= 2;
  523.  
  524. ################################################
  525.  
  526. 35.
  527.  
  528. ------------------------------------------------
  529.  
  530. SELECT SIFRAMODULA, MIN(SKOLARINA)
  531. FROM STUDENT
  532. WHERE MENTOR IS NOT NULL
  533. GROUP BY SIFRAMODULA
  534. HAVING MIN(SKOLARINA) > (SELECT MIN(SKOLARINA)
  535.                         FROM STUDENT
  536.                         WHERE SIFRAMODULA = 13);
  537.  
  538.  
  539. ################################################
  540.  
  541. 36.
  542.  
  543. ------------------------------------------------
  544.  
  545. I NACIN:
  546.  
  547. SELECT S.PREZIME, S.IME, S.SIFRAMODULA
  548. FROM STUDENT S
  549. WHERE S.SKOLARINA = (SELECT MIN(S1.SKOLARINA)
  550.                         FROM STUDENT S1
  551.                         WHERE S1.SIFRAMODULA = S.SIFRAMODULA)
  552.  
  553. ------------------------------------------------
  554.  
  555. II NACIN:
  556.  
  557. SELECT PREZIME, IME, SIFRAMODULA
  558. FROM STUDENT
  559. WHERE (SIFRAMODULA, SKOLARINA) IN (SELECT SIFRAMODULA, MIN(SKOLARINA)
  560.                                     FROM STUDENT
  561.                                     GROUP BY SIFRAMODULA);
  562.  
  563. ################################################
  564.  
  565. 37.
  566.  
  567. ------------------------------------------------
  568.  
  569. SELECT CONCAT(SUBSTR(S.IME,1,1),'.',SUBSTR(S.PREZIME,1,1),'.') AS INICIJALI,
  570.         ROUND(AVG(PO.POENI),2)
  571. FROM STUDENT S INNER JOIN POLAGANJE PO ON S.BROJINDEKSA = PO.BROJINDEKSA
  572. WHERE S.BROJINDEKSA IN (
  573.                SELECT POL.BROJINDEKSA
  574.                 FROM POLAGANJE POL INNER JOIN PREDMET PRE ON POL.SIFRAPREDMETA = PRE.SIFRAPREDMETA
  575.                 WHERE PRE.NAZIV LIKE 'Baze%')
  576. GROUP BY CONCAT(SUBSTR(S.IME,1,1),'.',SUBSTR(S.PREZIME,1,1),'.');
  577.  
  578.  
  579. ################################################
  580.  
  581. 38.
  582.  
  583. ------------------------------------------------
  584.  
  585. I NACIN:
  586.  
  587. SELECT SUBSTR(PO.BROJINDEKSA,1,4), COUNT(DISTINCT PO.SIFRAPREDMETA), COUNT(PO.BROJINDEKSA), ROUND(AVG(PO.POENI),2)
  588. FROM POLAGANJE PO INNER JOIN ISPITNIROK I ON (I.REDNIBROJ, I.GODINA) = (PO.REDNIBROJ,PO.GODINA)
  589. WHERE I.MESEC = 2 AND PO.POENI > 30
  590. GROUP BY SUBSTR(PO.BROJINDEKSA,1,4)
  591. ORDER BY AVG(PO.POENI);
  592.  
  593. ------------------------------------------------
  594.  
  595. II NACIN:
  596.  
  597. SELECT SUBSTR(PO.BROJINDEKSA,1,4), COUNT(DISTINCT PO.SIFRAPREDMETA), COUNT(PO.BROJINDEKSA), ROUND(AVG(PO.POENI),2)
  598. FROM POLAGANJE PO
  599. WHERE LOWER(EXTRACT(MONTH FROM DATUMPOLAGANJA)) = 2
  600. AND PO.POENI > 30
  601. GROUP BY SUBSTR(PO.BROJINDEKSA,1,4)
  602. ORDER BY AVG(PO.POENI) ASC;
  603.  
  604.  
  605. ################################################
  606.  
  607. 39.
  608.  
  609. ------------------------------------------------
  610.  
  611. SELECT S.SIFRAMODULA, COUNT(*) AS BROJ_STUDENATA,
  612.         SUM(CASE WHEN S.SKOLARINA > 100000 THEN 1 ELSE 0 END ) AS SK_PREKO_100K,
  613.         CASE
  614.             WHEN(SUM(CASE WHEN S.SKOLARINA > 100000 THEN 1 ELSE 0 END )>
  615.                 SUM(CASE WHEN S.SKOLARINA IS NULL THEN 1 ELSE 0 END))
  616.             THEN 'Vise samofinansirajucih'
  617.             WHEN(SUM(CASE WHEN S.SKOLARINA > 100000 THEN 1 ELSE 0 END )<
  618.                 SUM(CASE WHEN S.SKOLARINA IS NULL THEN 1 ELSE 0 END))
  619.             THEN 'Vise na budzetu'
  620.             ELSE 'Podjedanko'
  621.         END AS ODNOS
  622. FROM STUDENT S
  623. GROUP BY S.SIFRAMODULA
  624. HAVING MAX(S.SKOLARINA) > (SELECT MIN(SKOLARINA) FROM STUDENT WHERE SIFRAMODULA = 9)
  625. ORDER BY 3 DESC;
  626.  
  627. UMESTO NAZIVA KOLONE U ORDER BY MOZE SE PISATI REDNI BROJ KOLONE
  628.  
  629. ################################################
  630.  
  631. 40.
  632.  
  633. ------------------------------------------------
  634.  
  635. CREATE OR REPLACE VIEW ANGAZOVANJA_PROFESORA AS
  636. SELECT N.SIFRANASTAVNIKA, ROUND(AVG(A.PLATA),2) AS PROSECNA_PLATA,
  637.                 ROUND((CASE
  638.                 WHEN SUM(CASE WHEN DATUMDO IS NULL THEN 1 ELSE 0 END) > 0
  639.                 THEN SYSDATE
  640.                 ELSE MAX(A.DATUMDO) END) - MIN(A.DATUMOD),2) AS STAZ
  641. FROM NASTAVNIK N JOIN ANGAZOVANJE A ON N.SIFRANASTAVNIKA = A.SIFRANASTAVNIKA
  642. WHERE N.TITULA LIKE 'doktor'
  643. GROUP BY N.SIFRANASTAVNIKA
  644. ORDER BY N.SIFRANASTAVNIKA;
  645.  
  646. ################################################
  647.  
  648. 41.
  649.  
  650. ------------------------------------------------
  651.  
  652. I NACIN:
  653.  
  654. CREATE OR REPLACE VIEW STATISTIKA_STUDENATA AS
  655. SELECT S.BROJINDEKSA, P.GODINA, COUNT(*) AS BROJ_POLAGANJA,
  656.         ROUND(AVG(P.POENI),2) AS PROSECNO_POENA,
  657.         CASE WHEN
  658.             SUM(CASE WHEN P.OCENA > 5 THEN 1 ELSE 0 END) >
  659.             SUM(CASE WHEN P.OCENA <= 5 THEN 1 ELSE 0 END)
  660.             THEN 'ISPUNJEN USLOV'
  661.             ELSE 'NIJE ISPUNJEN USLOV'
  662.             END AS USLOV        
  663. FROM STUDENT S JOIN POLAGANJE P ON S.BROJINDEKSA = P.BROJINDEKSA
  664. GROUP BY P.GODINA, S.BROJINDEKSA
  665. HAVING COUNT(*)>2
  666.  
  667. II NACIN:
  668.  
  669. SELECT S.BROJINDEKSA, P.GODINA, COUNT(*) AS BROJ_POLAGANJA,
  670.         ROUND(AVG(P.POENI),2) AS PROSECNO_POENA,
  671.         CASE WHEN
  672.             SIGN(SUM(CASE WHEN P.POENI > 50 THEN 1 ELSE -1 END)) = 1
  673.             THEN 'ISPUNJEN USLOV'
  674.             ELSE 'NIJE ISPUNJEN USLOV'
  675.             END AS USLOV        
  676. FROM STUDENT S JOIN POLAGANJE P ON S.BROJINDEKSA = P.BROJINDEKSA
  677. GROUP BY P.GODINA, S.BROJINDEKSA
  678. HAVING COUNT(*) > 2;
  679.  
  680. ################################################
  681.  
  682. 42.
  683.  
  684. ------------------------------------------------
  685.  
  686. I NACIN:
  687.  
  688. CREATE OR REPLACE VIEW STATISTIKA_PREDMETA AS
  689. SELECT P.SIFRAPREDMETA, MAX(PO.POENI)-MIN(PO.POENI) AS RAZLIKA,
  690.     CASE SIGN(SUM(CASE WHEN PO.OCENA > 7 THEN 1 ELSE -1 END))  
  691.         WHEN 1 THEN 'LAK'    
  692.         WHEN -1 THEN 'TEZAK'
  693.         ELSE 'SREDNJE'
  694.         END AS TEZINA_ISPITA
  695. FROM PREDMET P JOIN POLAGANJE PO ON P.SIFRAPREDMETA = PO.SIFRAPREDMETA
  696. WHERE PO.POENI > 50
  697. GROUP BY P.SIFRAPREDMETA, PO.REDNIBROJ
  698. HAVING COUNT(*)>6
  699.  
  700. ------------------------------------------------
  701.  
  702. II NACIN:
  703.  
  704. CREATE OR REPLACE VIEW STATISTIKA_PREDMETA AS
  705. SELECT P.SIFRAPREDMETA, MAX(PO.POENI)-MIN(PO.POENI) AS RAZLIKA,
  706.     CASE WHEN
  707.             SUM(CASE WHEN PO.OCENA > 7 THEN 1 ELSE 0 END) >
  708.             SUM(CASE WHEN PO.OCENA > 5 AND PO.OCENA < 8 THEN 1 ELSE 0 END)
  709.         THEN 'LAK'
  710.         WHEN
  711.             SUM(CASE WHEN PO.OCENA > 7 THEN 1 ELSE 0 END) <
  712.             SUM(CASE WHEN PO.OCENA > 5 AND PO.OCENA < 8 THEN 1 ELSE 0 END)
  713.         THEN 'TEZAK'
  714.         ELSE 'SREDNJE'
  715.         END AS TEZINA_ISPITA
  716. FROM PREDMET P JOIN POLAGANJE PO ON P.SIFRAPREDMETA = PO.SIFRAPREDMETA
  717. WHERE PO.POENI > 50
  718. GROUP BY P.SIFRAPREDMETA, PO.REDNIBROJ
  719. HAVING COUNT(*)>6
  720.  
  721. ################################################
  722.  
  723. 43. FIBONACIJEV NIZ REKURZIJA
  724.  
  725. ------------------------------------------------
  726.  
  727. WITH FIB (RB, PREDHODNI, TRENUTNI) AS
  728. (
  729.     SELECT 1, 0, 1
  730.     FROM DUAL
  731.     UNION ALL
  732.     SELECT RB+1, TRENUTNI, PREDHODNI+TRENUTNI
  733.     FROM FIB
  734.     WHERE RB < 20
  735. )
  736. SELECT * FROM FIB;
  737.  
  738. ################################################
  739.  
  740. 44. Rekurzija uslovni predmet
  741.  
  742. ------------------------------------------------
  743.  
  744. WITH USLOVNI_PREDMETI (SIFRAUSLOVA) AS
  745. (
  746.     SELECT USLOV
  747.     FROM PREDMET
  748.     WHERE NAZIV LIKE 'Vestacka%'
  749.         UNION ALL
  750.     SELECT USLOV
  751.     FROM PREDMET JOIN USLOVNI_PREDMETI ON (SIFRAUSLOVA = SIFRAPREDMETA)
  752.     WHERE USLOV IS NOT NULL
  753. )
  754. SELECT * FROM USLOVNI_PREDMETI;
  755.  
  756.  
  757. ################################################
  758.  
  759. 45. Prikazati broj polaganja prema godinama i rokovima, ali
  760. i zbirno prema godinama za sva polaganja koja su realizovana
  761. nakon 2021. godine.
  762.  
  763. ROLLUP
  764.  
  765. ------------------------------------------------
  766.  
  767.  
  768. SELECT IR.GODINA, IR.REDNIBROJ, GROUPING(IR.GODINA), GROUPING(IR.REDNIBROJ), COUNT(*) AS BROJ
  769. FROM POLAGANJE IR
  770. WHERE IR.GODINA > 2021
  771. GROUP BY ROLLUP(IR.GODINA, IR.REDNIBROJ)
  772. ORDER BY IR.GODINA
  773.  
  774. ################################################
  775.  
  776. 46. Prikazati broj polaganja prema godini i predmetu,
  777. za ona polaganja koja su se desila posle 2021. godine,
  778. zbirno po godinama, predmetima i godinama i predmetima.
  779. U rezultat ukljuciti samo predmete sa parnim siframa
  780.  
  781. CUBE
  782.  
  783. ------------------------------------------------
  784.  
  785. SELECT GODINA, SIFRAPREDMETA, GROUPING(GODINA), GROUPING(SIFRAPREDMETA), COUNT(*) AS BROJ
  786. FROM POLAGANJE
  787. WHERE GODINA > 2021 AND MOD(SIFRAPREDMETA,2) = 0
  788. GROUP BY CUBE(GODINA, SIFRAPREDMETA);
  789.  
  790. ################################################
  791.  
  792. 47. NAJJEBENIJI DO SAD
  793.  
  794. ------------------------------------------------
  795.  
  796.  
  797. SELECT S.SIFRAMODULA, COUNT(*) AS BROJ_POLAGANJA,
  798.         ROUND(
  799.             SUM(CASE WHEN PO.POENI > 50 THEN 1 ELSE 0 END)/COUNT(*)
  800.         ,2)
  801.         AS UDEO_USPESNIH_POLAGANJA,
  802.         ROUND(MONTHS_BETWEEN(SYSDATE, MIN(PO.DATUMPOLAGANJA)),2) AS BROJ_MESECI
  803. FROM POLAGANJE PO JOIN STUDENT S ON S.BROJINDEKSA = PO.BROJINDEKSA
  804. WHERE PO.DATUMPOLAGANJA + INTERVAL '2-5' YEAR TO MONTH > SYSDATE
  805. GROUP BY S.SIFRAMODULA
  806. HAVING COUNT(*)>10 AND COUNT(*) < (SELECT MAX(COUNT(*))
  807.                                     FROM POLAGANJE POL JOIN STUDENT S1 ON S1.BROJINDEKSA = POL.BROJINDEKSA
  808.                                     WHERE POL.DATUMPOLAGANJA + INTERVAL '2-5' YEAR TO MONTH > SYSDATE
  809.                                     GROUP BY S1.SIFRAMODULA)
  810. ORDER BY BROJ_MESECI;
  811.  
Advertisement
Add Comment
Please, Sign In to add comment