1-5 Rjesenja

You might also like

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

1.

LABORATORIJSKE VJEŽBE – rješenja zadataka

CREATE DATABASE em8766e

CREATE TABLE stud


( mbrStud NCHAR(8) NOT NULL
, prezStud NCHAR(20) NOT NULL
, imeStud NCHAR(20) NOT NULL
, datRodStud DATE
, pbrStud INTEGER
, adrStud NCHAR(40)
, prosOcjena DECIMAL(3,2) NOT NULL
);

CREATE UNIQUE INDEX studentUnique ON stud (mbrStud);

SELECT * FROM stud;

INSERT INTO stud VALUES ('12345678', 'Meskovic', 'Emir', '1979-


09-02', 75000, 'Izeta Sarajlica 5A', 9.11);

INSERT INTO stud VALUES ('222222', 'Hasic', 'Haso', '2001-01-


01', 568, 'Tuzla', 6.3);

INSERT INTO stud VALUES ('333333', 'Mujic', 'Mujo', '1999-12-


12', 2222, 'Lukavac', 9.95);

SELECT * FROM stud;

UPDATE stud SET mbrStud='111111' WHERE mbrStud='333333';

SELECT * FROM stud;

SELECT * FROM stud INTO OUTFILE 'C:\\tmp\\studenti.unl' FIELDS


TERMINATED BY '#' LINES TERMINATED BY '\n';

DELETE FROM stud;

SELECT * FROM stud;

LOAD DATA INFILE '/tmp/studenti.unl' INTO TABLE stud FIELDS


TERMINATED BY '#' LINES TERMINATED BY '\n';

SELECT * FROM stud;

DROP TABLE stud;

DROP DATABASE em8766e;


2. LABORATORIJSKE VJEŽBE – rješenja i rezultati izvođenja upita
1. Ispis šifri, imena, prezimena i koeficijenata za platu svih nastavnika – ukupno 98 zapisa
SELECT sifNastavnik, imeNastavnik, prezNastavnik, koef FROM nastavnik;
sifNastavnik imeNastavnik prezNastavnik koef
122 Tin
Grabovac 5.90
126 Zdravko Budišin 6.30
130 Antun Ivan Jonjić
6.70
...

2. Ispis svih podataka (vrijednosti svih atributa) o predmetima – ukupno 182 zapisa
SELECT * FROM pred;
sifPred kratPred nazPred
sifOrjed upisanoStud brSatiTjed
36 TEHNO Elektrotehnièka tehnologija 100003
2 2
37 EEL Energetska elektronika 100005
6 2
39 RASAKO Radiorelejne i satelitske komunikacije
100011 6 3 ...

3. Lista različitih imena studenata (svako ime se u listi treba pojaviti samo jednom, bez obzira koliko
studenata ima jednako ime)- ukupno 171 zapis
SELECT DISTINCT imestud FROM stud;
imestud
Adrian
Adrijan
Adrijana
...

4. Ispis šifri nastavnika koji su bar jednom negativno ocijenili studente na ispitu iz predmeta sa šifrom
146. Svaka se šifra takvih nastavnika u listi treba pojaviti samo jednom - ukupno 1 zapis
SELECT DISTINCT sifNastavnik FROM ispit WHERE sifpred = 146 AND ocjena = 1;
sifNastavnik
326

5. Ispis matičnih brojeva studenata koji su POLOŽILI ispit iz predmeta sa šifrom 262 - 10 zapisa
SELECT mbrstud FROM ispit WHERE sifpred = 262 AND ocjena > 1;
mbrstud
1147
1267
1312
...

6. Ispis prezimena i imena nastavnika i iznosa plaće, ako se plaća nastavnika dobije množenjem
broja 800 s koeficijentom koji je prije toga uvećan za 0.4 - ukupno 98 zapisa
SELECT preznastavnik, imenastavnik, 800 * ( koef + 0.4 ) as Plata
FROM nastavnik;
preznastavnik imenastavnik Plata
Grabovac Tin 5040.0000
Budišin Zdravko 5360.0000
Jonjić Antun Ivan 5680.0000
...

7. Ispis prezimena nastavnika čija je plaća izračunata na gornji način manja od 8000 i veća od 3500
- ukupno 76 zapisa
SELECT preznastavnik FROM nastavnik
WHERE 800 * ( koef + 0.4 ) BETWEEN 3500 AND 8000;
preznastavnik
Grabovac
Budišin
Jonjić
...

8. Ispis prezimena i prvog slova imena za sve nastavnike - ukupno 98 zapisa


SELECT prezNastavnik, SUBSTRING(imeNastavnik,1,1) FROM nastavnik;
prezNastavnik imeNastavnik
Grabovac T
Budišin Z
Jonjić A
...

9. Ispis prezimena i imena, te inicijala studenata. Za svakog studenta se, pored imena i prezimena,
ispisuje jedan niz znakova sastavljen iz prvog slova imena, tačke, prvog slova prezimena i tačke, npr.
za studenta Andrija Bošnjak ispisuje se A.B. - ukupno 302 zapisa
SELECT imestud, prezstud, CONCAT(SUBSTRING(imestud,1,1),’.’,
SUBSTRING(prezstud,1,1),’.’) FROM stud;
imestud prezstud (expression)
Zdenko Kolac Z.K.
Danijel Marović D.M.
Jozefina Antončić J.A.
...

10. Ispis svih podataka o ispitima koji su obavljeni u julu bilo koje godine - ukupno 12 zapis
SELECT * FROM ispit WHERE MONTH(datIspit) = 7;
mbrstud sifPred sifNastavnik datIspit ocjena
1173 253 166
02.07.1999 2
1180 370 232
07.07.2000 3
...

11. Ispis svih podataka o ispitima koji su obavljeni neke srijede u augustu bilo koje godine -
ukupno 7 zapisa
SELECT * FROM ispit
WHERE WEEKDAY(datIspit) = 2 AND MONTH(datIspit) = 8;
mbrstud sifPred sifNastavnik datIspit ocjena
1189 367 285
30.08.2000 2
1242 525 334
30.08.2000 3
1266 265 277
30.08.2000 3

12. Ispis matičnog broja studenta, ocjene, datuma ispita, današnjeg datuma te broja dana koji su
protekli nakon održavanja ispita - ukupno 435 zapisa za (05.09.2013)
SELECT mbrStud, ocjena, datIspit, CURDATE(),DATEDIFF(CURRENT_DATE,
datIspit)
FROM ispit;
mbrStud ocjena datIspit (expression) (expression)
1120 4 2000-08-28
2013-09-05 4775
1125 5 2000-01-11 2013-09-05
5005
...
13. Ispis podataka o studentima koji su rođeni na današnji dan prije tačno 30 godina (napomena: ne
prije 25*365 dana, nego na današnji dan prije 30 godina). Upit mora biti neovisan o datumu izvođenja.
Analizirajte što će se dogoditi ukoliko upit izvedemo na dan 29.2.2013. godine - ukupno 0 zapisa
za 05.09.2013
SELECT * FROM stud WHERE datRodStud = DATE_ADD(datRodStud, INTERVAL -30
YEAR);

14. Za svaki ispit ispisati šifru nastavika, matični broj studenta, ocjenu i cijeli broj koji pokazuje koliko
je dana proteklo između ispita i datuma 1.1.2009. - ukupno 435 zapisa
SELECT sifNastavnik, mbrStud, ocjena, STR_TO_DATE('1,1,2009','%d,%m,%Y') -
datIspit FROM ispit;
sifnastavnik mbrstud ocjena (expression)
122 1167 2
3415
481 1210 2
3355
...

15. Za svaki ispit ispisati matični broj studenta, šifru predmeta, ocjenu i datum na koji će proći tačno
3800 dana od održavanja ispita. Ispisati samo one ispite za koje taj dan nije već prošao. Upit mora biti
neovisan o datumu izvođenja - ukupno 98 zapisa za datum 05.09.2013
SELECT mbrStud, sifPred, ocjena, DATE_ADD(datIspit, INTERVAL 4800 DAY) FROM
ispit WHERE DATE_ADD(datIspit, INTERVAL 4800 DAY) >= CURRENT_DATE;
mbrstud sifpred ocjena (expression)
1167 229 2
21.01.2010
1210 545 2
22.03.2010
...

16. Za svaki ispit ispisati matični broj studenta, šifru predmeta, ocjenu i datum održavanja i datum na
koji će se navršiti 3 godine od održavanja ispita. Analizirajte što će se dogoditi s upitom ukoliko je ispit
održan 29.2.1980. godine – ukupno 435 zapisa
SELECT mbrStud, sifPred, ocjena, datIspit, ADDDATE(datIspit, INTERVAL 3
YEAR) FROM ispit;
mbrstud sifpred ocjena datispit (expression)
1167 229 2
27.08.1999 27.08.2001
1210 545 2
26.10.1999 26.10.2001
1272 607 2
18.01.2000 18.01.2002
...

17. Ispis svih podataka o rezervacijama, s time da se kao naslov za atribut sifPred u izlaznoj listi
pojavljuje tekst "predmet". - ukupno 89 zapisa
SELECT oznDvorana, oznVrstaDan, sat, sifPred AS predmet FROM rezervacija;
oznDvorana oznVrstaDan sat predmet
A101 CE 12
343
A101 CE 13
390
A101 CE 15
56
...
18. Obaviti projekciju relacije stud po atributima poštanski broj rođenja i poštanski broj stanovanja -
ukupno 90 zapisa
SELECT DISTINCT pbrrod, pbrstan FROM stud;
pbrrod pbrstan
10000 10000
10000 20000
10000 35400
...

3. LABORATORIJSKE VJEŽBE – rješenja i rezultati izvođenja upita

1. Ispisati različite šifre županija za mjesta čiji naziv počinje slovom Z - ukupno 7 zapisa
SELECT DISTINCT sifZupanija FROM mjesto WHERE nazMjesto LIKE 'Z%';
sifZupanija
1
2
13
...

2. Ispis svih podataka o studentima koji su rođeni između 1.5. i 1.9.1982 i prezime im počinje slovom
"R" ili slovom "P" ili slovom "S" ili slovom "V". Koristiti operator LIKE - ukupno 7 zapisa
SELECT * FROM stud
WHERE datrodstud BETWEEN '1982-05-01' AND '1982-09-01'
AND (prezstud LIKE 'R%' OR prezstud LIKE 'P%' OR prezstud LIKE 'S%'
OR prezstud LIKE 'V%');
mbrstud imestud prezstud pbrrod pbrstan datrodstud jmbgstud
1127 Dario Risek 32000 32000 1982-07-22
2207982362909
1135 Juraj Rožman 42000 42000 1982-08-22
2208982312508
1208 Franjo Stipanov 31000 31000 1982-08-14
1408982385042
1274 Silvestar Sabljak 21000 10000 1982-05-18
1805982335045
1286 Fran Šef 21000 10000 1982-
08-24 2408982383317
1311 Goran Remenar 40000 40000 1982-05-23
2305982390118
1437 Miro Pugar 34310 32281 1982-07-05
0507982335112

3. Ispis svih studenata koji su rođeni između 1.5. i 1.9.1982 i prezime im počinje slovom "R" ili
slovom "P" ili slovom "S" ili slovom "V". Koristiti operator RLIKE - kao u prethodnom zadatku
SELECT * FROM stud
WHERE datrodstud BETWEEN '1982-05-01' AND '1982-09-01'
AND prezstud RLIKE '^[RPSV]';

4. Ispis svih mjesta kojima naziv počinje i završava samoglasnikom. Koristiti operator LIKE -
ukupno 7 zapisa
SELECT * FROM mjesto WHERE
nazMjesto LIKE 'A%a' OR nazMjesto LIKE 'A%e' OR nazMjesto LIKE 'A%i'
OR nazMjesto LIKE 'A%o' OR nazMjesto LIKE 'A%u'
OR nazMjesto LIKE 'E%a' OR nazMjesto LIKE 'E%e' OR nazMjesto LIKE 'E%i'
OR nazMjesto LIKE 'E%o' OR nazMjesto LIKE 'E%u'
OR nazMjesto LIKE 'I%a' OR nazMjesto LIKE 'I%e' OR nazMjesto LIKE 'I%i'
OR nazMjesto LIKE 'I%o' OR nazMjesto LIKE 'I%u'
OR nazMjesto LIKE 'O%a' OR nazMjesto LIKE 'O%e' OR nazMjesto LIKE 'O%i'
OR nazMjesto LIKE 'O%o' OR nazMjesto LIKE 'O%u'
OR nazMjesto LIKE 'U%a' OR nazMjesto LIKE 'U%e' OR nazMjesto LIKE 'U%i'
OR nazMjesto LIKE 'U%o' OR nazMjesto LIKE 'U%u';
pbr nazmjesto sifzupanija
47302 Oštarije 4
20242 Oskorušno 19
51410 Opatija 8
...

5. Ispis svih mjesta kojima naziv počinje i završava bilo kojim znakom osim samoglasnikom. Koristiti
operator RLIKE - ukupno 116 zapisa
SELECT * FROM mjesto
WHERE nazMjesto NOT RLIKE '^[AEIOU]' AND nazMjesto NOT RLIKE '[aeiou]$';
pbr nazmjesto sifzupanija
43500 Daruvar 7
44000 Sisak 3
44271 Letovanić 3
...

6. Ispis svih mjesta kojima naziv počinje ili završava bilo kojim znakom osim samoglasnikom.
Koristiti operator RLIKE - ukupno 266 zapisa
SELECT * FROM mjesto
WHERE nazMjesto NOT RLIKE '^[AEIOU]' OR nazMjesto NOT RLIKE '[aeiou]$';
pbr nazmjesto sifzupanija
43500 Daruvar 7
43531 Veliki Bastaji 7
44000 Sisak 3
...

7. JMBG (jedinstveni matični broj građana) bi trebao biti sastavljen tako da prvih 7 znakova
označava datum rođenja. Ispišite sve studente kojima JMBG (prvih sedam znakova) ne odgovara
datumu rođenja - ukupno 1 zapis
SELECT * FROM stud WHERE SUBSTRING(jmbgstud,3,2)<>MONTH(datRodStud)
OR SUBSTRING(jmbgstud,1,2)<>DAY(datRodStud)
OR SUBSTRING(jmbgstud,5,3) <> YEAR(datrodstud)-1000;
mbrstud imestud prezstud pbrrod pbrstan datrodstud jmbgstud
1173 Gordan Boršić 10000 20000 29.02.1980
1906980334016

8. Ispisati prosječni koeficijent za platu nastavnika koji stanuju u mjestu sa poštanskim brojem 10000
SELECT AVG(koef) FROM nastavnik WHERE pbrStan = 10000;
(avg)
5.696078431372549019607843137255
9. Ispisati datume kada su održani prvi i posljednji ispit
SELECT MIN(datIspit), MAX(datIspit) FROM ispit;
(min) (max)
1999-01-11 2001-02-13
10. U koliko različitih organizacionih jedinica su zaposleni nastavnici kojima je poštanski broj mjesta
stanovanja 10000
SELECT COUNT(DISTINCT sifOrgjed) FROM nastavnik
WHERE pbrStan = 10000;
(count)
13
11. Ispisati kolika je razlika u danima između najmlađeg i najstarijeg studenta
SELECT DATEDIFF(MAX(datRodStud), MIN(datRodStud)) FROM stud;
(expression)
1484

12. Ispisati prosječnu ocjenu ispita koji su obavljeni u 1999. godini. U prosjek ulaze samo pozitivne
ocjene
SELECT AVG(ocjena) FROM ispit WHERE YEAR(datIspit) = 1999 AND ocjena > 1;
(avg)
2.939393939393939393939393939394
13. Ispisati broj položenih ispita i prosječnu ocjenu položenih ispita iz predmeta sa šifrom 146
SELECT COUNT(ocjena), AVG(ocjena) FROM ispit
WHERE sifPred = 146 AND ocjena > 1;
(count(*)) (avg)
4 3.25
14. Ispisati prosječnu starost studenata u danima za sve studente koji su rođeni u mjestu sa
poštanskim brojem 10000, a ime im počinje ili završava samoglasnikom. – na dan 06.09.2013
SELECT AVG(DATEDIFF(CURDATE(),datRodStud)) FROM stud
WHERE pbrRod = 10000
AND (imeStud RLIKE '^[AEIOU]' OR imeStud RLIKE '[aeiou]$')
AVG(DATEDIFF(CURDATE(),datRodStud))
11212.2353

15. Ispisati iz koliko se različitih predmeta izvodi nastava u dvoranama u zgradi B (oznaka dvorane
počinje slovom B) utorkom i srijedom u bilo koje vrijeme. -
SELECT COUNT(DISTINCT sifPred) FROM rezervacija
WHERE oznDvorana LIKE ‘B%’
AND oznVrstaDan IN (‘UT’,’SR’)
COUNT(DISTINCT sifPred)
11

16. Ispisati broj studenata i ukupnu prosječnu ocjenu za sve studente koji su polagali ispite bilo kojeg
petka u julu mjesecu prije najmanje 5 godina.
SELECT COUNT(*), AVG(ocjena) FROM ispit
WHERE WEEKDAY(datIspit)=5 AND MONTH(datIspit)=7
AND YEAR(datIspit)+5<=YEAR(CURRENT_DATE)
COUNT(*) AVG(ocjena)
6 2.6667

17. Ispisati ukupan broj upisanih studenata na svim predmetima koji imaju manje od 3 časa
sedmično, a naziv im sadrži riječ ‘tehnike’.
SELECT SUM(upisanoStud) FROM pred
WHERE brojSatiTjedno<3 AND nazPred LIKE '%tehnike%'
SUM(upisanoStud)
1

4. LABORATORIJSKE VJEŽBE – rješenja i rezultati izvođenja upita

1. Ispisati inicijal imena i prezime studenta, naziv predmeta (prvih 25 znakova) i datum ispita za svaki
ispit ocijenjen ocjenom 5
SELECT SUBSTRING(imeStud,1,1), prezStud, SUBSTRING(nazpred,1,25), datIspit
FROM stud INNER JOIN ispit ON stud.mbrStud = ispit.mbrStud
INNER JOIN pred ON ispit.sifpred = pred.sifpred
WHERE ocjena = 5;
imestud prezstud nazpred datispit
V Brezac Fizika poluvodiča
11.01.2000
D Risek Zaštita i automatika elek
03.01.2000
N Novak Elektronički izvori napaj
25.06.1999
N Novak Osnove baza podataka
16.10.2000
... ukupno 21 zapis
2. Ispisati šifre i nazive organizacijskih jedinica čije neposredno podređene organizacijske jedinice
imaju naziv koji u sebi sadrži riječ "matem". Svaka se organizacijska jedinica u tom popisu smije naći
najviše jednom.
SELECT DirOJ.sifOrgjed, DirOJ.nazOrgjed
FROM orgjed DirOJ INNER JOIN orgjed PodOJ ON
DirOJ.siforgjed=PodOJ.sifNadOrgjed
WHERE PodOJ.nazorgjed LIKE '%matem%';
siforgjed nazorgjed
9996 Sveučilište u Zagrebu
9996 Sveučilište u Zagrebu
9999 Sveučilište u Splitu
36 Fakultet elektrotehnike i računarstva
100002 Zavod za primijenjenu matematiku
3. Ispisati nazive i kratice predmeta koji pripadaju organizacijskim jedinicama čija neposredno
nadređena organizacijska jedinica ima naziv koji sadrži riječ "tehnike".
SELECT nazPred, kratPred
FROM pred INNER JOIN orgjed OsnOJ ON pred.siforgjed=OsnOJ.siforgjed
INNER JOIN orgjed nadOJ ON osnOJ.sifnadorgjed=nadOJ.siforgjed
WHERE nadOJ.nazorgjed LIKE '%tehnike%' ;
nazpred
kratpred
Matematika III MAT3
Matematika II MAT2
Elektronička instrumentacija INE03O6
...ukupno 182 zapisa
4. Ispisati nazive organizacijskih jedinica onih predmeta koje su u aprilu 2000. godine ispitivali
nastavnici čije je mjesto stanovanja u županiji koja se naziva "Dubrovačko-neretvanska".
SELECT DISTINCT nazorgjed
FROM ispit INNER JOIN pred ON ispit.sifpred=pred.sifpred
INNER JOIN orgjed ON pred.siforgjed=orgjed.siforgjed
INNER JOIN nastavnik ON ispit.sifNastavnik=nastavnik.sifNastavnik
INNER JOIN mjesto ON nastavnik.pbrStan=mjesto.pbr
INNER JOIN zupanija ON mjesto.sifzupanija=zupanija.sifzupanija
WHERE MONTH(datispit)=4 AND YEAR(datispit)=2000
AND nazzupanija='Dubrovačko-neretvanska';
nazorgjed
Zavod za primijenjenu fiziku
Zavod za radiokomunikacije i visokofrekvencijsku elektroniku
5. Ispisati podatke o studentima koje su na ispitu srušili nastavnici koji stanuju u županiji pod
nazivom "Osječko-baranjska". Svaki takav student se u popisu smije naći samo jednom.
SELECT DISTINCT stud.*
FROM ispit INNER JOIN nastavnik ON
ispit.sifnastavnik=nastavnik.sifnastavnik INNER JOIN stud ON ispit.mbrstud
=stud.mbrstud
INNER JOIN mjesto ON nastavnik.pbrstan=mjesto.pbr
INNER JOIN zupanija ON mjesto.sifzupanija=zupanija.sifzupanija
WHERE ocjena=1 AND nazzupanija='Osječko-baranjska';

mbrstud imestud prezstud pbrrod pbrstan


datrodstud jmbgstud
1173 Gordan Boršić 10000
20000 29.02.1980 1906980334016
1386 Dragan Vidaković 10000
10000 05.12.1982 0512982340003
6. Koliki je ukupni broj studenata koji su upisali predmete koji se predaju na organizacijskim
jedinicama čija je neposredno nadređena organizacijska jedinica "Fakultet elektrotehnike i
računarstva"
SELECT SUM(upisanostud)
FROM pred INNER JOIN orgjed osnOJ ON pred.siforgjed=osnOJ.siforgjed
INNER JOIN orgjed nadOJ ON osnOJ.sifnadorgjed=nadOJ.siforgjed
WHERE nadOJ.nazorgjed=’Fakultet elektrotehnike i računarstva’;
(sum)
2080
7. Ispisati ime i prezime nastavnika, te naziv organizacijske jedinice u kojoj je zaposlen svaki
nastavnik
SELECT imeNastavnik, prezNastavnik, nazorgjed
FROM nastavnik INNER JOIN orgjed ON nastavnik.siforgjed = orgjed.siforgjed;
imenastavnik preznastavnik nazorgjed
Tin Grabovac Zavod za visoki napon
i energetiku
Zdravko Budišin Zavod za
telekomunikacije
Antun Ivan Jonjić Zavod za elektroničke
sustave i obradbu informacija
... ukupno 98 zapisa

8. Ispisati ime, prezime, naziv mjesta u kojem stanuje, te naziv mjesta rođenja i naziv županije
rođenja svakog studenta
SELECT imestud, prezstud, MjestoStan.nazmjesto, MjestoRod.nazmjesto,
nazzupanija
FROM stud INNER JOIN mjesto MjestoRod ON stud.pbrrod = MjestoRod.pbr
INNER JOIN zupanija ON MjestoRod.sifzupanija = zupanija.sifzupanija
INNER JOIN mjesto MjestoStan ON stud.pbrstan = MjestoStan.pbr;
imestud prezstud nazmjesto nazmjesto nazzuzpanija
Zdenko Kolac Čakovec Osijek
Osječko-baranjska
Danijel Marović Zagreb Split
Splitsko-dalmatinska
Jozefina Antončić Zagreb Zagreb
Grad Zagreb
... ukupno 302 zapisa
9. Koliko negativnih ocjena su dodijelili nastavnici koji stanuju u mjestu čiji naziv počinje slovom "Z"
SELECT COUNT(*)
FROM ispit INNER JOIN nastavnik ON ispit.sifNastavnik =
nastavnik.sifNastavnik
INNER JOIN mjesto ON nastavnik.pbrStan = mjesto.pbr
WHERE nazmjesto LIKE 'Z%' AND ocjena = 1 ;
(count(*))
104
10. Odredite broj različitih nastavnika sa organizacione jedinice „Zavod za primijenjenu matematiku“
kod kojih su studenti polagali ispite.
SELECT COUNT(DISTINCT ispit.sifNastavnik)
FROM ispit INNER JOIN nastavnik ON ispit.sifNastavnik =
nastavnik.sifNastavnik
INNER JOIN orgjed ON nastavnik.siforgjed = orgjed.siforgjed
WHERE nazorgjed = ‘Zavod za primijenjenu matematiku’;
(count)
7
11. Ispisati oznake i kapacitet dvorana koje su rezervisane za predmet „Energetska elektronika-
izabrana poglavlja” ponedjeljkom, srijedom ili petkom (u bilo koje vrijeme)
SELECT dvorana.oznDvorana, kapacitet
FROM rezervacija INNER JOIN pred ON rezervacija.sifpred = pred.sifpred
INNER JOIN dvorana ON rezervacija.oznDvorana=dvorana.oznDvorana
WHERE nazPred=’Energetska elektronika-izabrana poglavlja’
AND oznvrstadan IN (‘PO’,’SR’,’PE’);

ozndvorana kapacitet
A101 39
A101 39
A101 39
A101 39
A101 39
... ukupno 5 zapisa
12. Ispisati sve nazive organizacionih jedinica u kojima je zaposlen barem jedan nastavnik. Naziv
svake takve organizacione jedinice treba se u popisu pojaviti samo jednom
SELECT DISTINCT nazOrgjed
FROM nastavnik INNER JOIN orgjed ON nastavnik.sifOrgjed = orgjed.sifOrgjed;
nazorgjed
Grupa računarskih znanosti
Grupa za primijenjenu matematiku
Zavod za automatiku i procesno računarstvo
... ukupno 13 zapisa
13. Iz koliko različitih predmeta se obavlja nastava u dvoranama čiji kapacitet nije preko 60
studenata
SELECT COUNT(DISTINCT sifPred) FROM rezervacija
INNER JOIN dvorana ON rezervacija.oznDvorana = dvorana.oznDvorana
WHERE kapacitet <= 60;
(count)
52

14. Ispisati nazive mjesta u kojima postoji barem jedan student koji je u tom mjestu i rođen i stanuje.
Nazivi takvih mjesta se u popisu trebaju naći najviše jednom.
SELECT DISTINCT nazmjesto FROM mjesto, stud
WHERE mjesto.pbr = stud.pbrrod
AND mjesto.pbr = stud.pbrstan;
nazmjesto
Bjelovar
Bol
Dubrovnik
... ukupno 26 zapisa
15. Ispisati ime, prezime, te naziv mjesta rođenja i naziv mjesta stanovanja svih studenata koji su
položili ispit iz predmeta pod nazivom "Elektronički sklopovi"
SELECT imestud, prezstud, mjestorod.nazmjesto, mjestostan.nazmjesto
FROM stud INNER JOIN mjesto mjestorod ON stud.pbrrod = mjestorod.pbr
INNER JOIN mjesto mjestostan ON stud.pbrstan = mjestostan.pbr
INNER JOIN ispit ON stud.mbrstud=ispit.mbrstud
INNER JOIN pred ON ispit.sifpred = pred.sifpred
WHERE nazpred = 'Elektronički sklopovi' AND ocjena > 1;
imestud prezstud nazmjesto nazmjesto
Alenka Vukojević Split Split
Željka Morić Oskorušno Zagreb
Iva Mioč Split
Split
ukupno 18 zapisa
16. Ispisati sve podatke o studentima koji ne stanuju u istom mjestu u kojem su rođeni, ali im se
mjesto rođenja i mjesto stanovanja nalaze u istoj županiji
SELECT stud.* FROM stud
INNER JOIN mjesto mjestorod ON stud.pbrrod = mjestorod.pbr
INNER JOIN mjesto mjestostan ON stud.pbrstan = mjestostan.pbr
WHERE pbrrod <> pbrstan
AND mjestorod.sifzupanija = mjestostan.sifzupanija;
mbrstud imestud prezstud pbrrod pbrstan datrodstud jmbgstud
1151 Karlo Krsnik 10010 10000 21.08.1982
2108982320522
1433 Igor Bogati 10380 10000 10.11.1982
1011982385009
1443 Nataša Cerjan 33520 33405 31.08.1982
3108982335042
ukupno 3 zapisa

17. Ispisati podatke o nastavnicima koji su ispitivali studente koji stanuju u istoj županiji u kojoj
stanuje i nastavnik
SELECT DISTINCT nastavnik.*
FROM ispit INNER JOIN nastavnik ON ispit.sifnastavnik =
nastavnik.sifnastavnik
INNER JOIN stud ON ispit.mbrstud = stud.mbrstud
INNER JOIN mjesto mjestonast ON nastavnik.pbrstan=mjestonast.pbr
INNER JOIN mjesto mjestostud ON stud.pbrstan=mjestostud.pbr
WHERE mjestonast.sifzupanija = mjestostud.sifzupanija;
sifnastavnik imenastavnik preznastavnik pbrstan siforgjed koef
142 Alan Ostojčić 10000 100010 7.90
154 Žarko Dubinko 10000 100002 9.10
166 Nino Lipec 10000 100005 3.30
... ukupno 24 zapisa
18. Studenti čije i ime i prezime započinje slovom K natječu se na šahovskom turniru. Svaki takav
student treba odigrati dvije partije sa svakim drugim studentom. Treba ispisati sve moguće parove i to
tako da se svaki student pojavi u listi dva puta - jednom je u paru ispisan na prvom mjestu, drugi put je
ispisan na drugom mjestu. Dovoljno je ispisati samo prezimena i imena studenata.
SELECT stud1.imestud, stud1.prezstud, stud2.imestud, stud2.prezstud
FROM stud stud1, stud stud2
WHERE stud1.imestud LIKE 'K%' AND stud1.prezstud LIKE 'K%'
AND stud2.imestud LIKE 'K%' AND stud2.prezstud LIKE 'K%'
AND stud1.mbrstud <> stud2.mbrstud;
imestud prezstud imestud prezstud
Karlo Krsnik Kristian Klarin
Karlo Krsnik Karla Kafadar
Kristian Klarin Karlo Krsnik
Kristian Klarin Karla Kafadar
Karla Kafadar Karlo Krsnik
Karla Kafadar Kristian Klarin
ukupno 6 zapisa
5. LABORATORIJSKE VJEŽBE – rješenja i rezultati izvođenja upita
1. Ispisati sve podatke o studentima koji nisu negativno ocijenjeni niti na jedanom ispitu
SELECT * FROM stud
WHERE mbrStud NOT IN (SELECT mbrStud FROM ispit WHERE ocjena = 1);
mbrstud imestud prezstud pbrrod pbrstan datrodstud
jmbgstud
1120 Zdenko Kolac 31000 40000
09.06.1983 0906983330186
1121 Danijel Marović 2 1000
10000 21.12.1982 2112982330118
1123 Jozefina Antončić 10000 10000
23.01.1982 2301982330133
... ukupno 250 zapisa

2. Ispisati naziv svakog mjesta u kojem stanuje barem jedan nastavnik, a u kojem nije rođen niti
jedan student
SELECT nazmjesto FROM mjesto
WHERE pbr IN (SELECT DISTINCT pbrStan FROM nastavnik)
AND pbr NOT IN (SELECT DISTINCT pbrRod FROM stud);
nazmjesto
Studenci
Dragljane
Strizivojna
... ukupno 7 zapisa

3. Ispisati nazive županija u kojima niti jedan student ne stanuje, a barem jedan student je rođen
SELECT nazZupanija FROM zupanija
WHERE sifzupanija IN (
SELECT sifzupanija FROM mjesto INNER JOIN stud ON stud.pbrrod = mjesto.pbr)
AND sifzupanija NOT IN (
SELECT sifzupanija FROM mjesto INNER JOIN stud ON stud.pbrstan =
mjesto.pbr);
nazmjesto
Zadarska
... ukupno 1 zapis

4. Ispisati šifru, ime i prezime nastavnika koji u toku prva dva mjeseca tekuće godine nisu pozitivno
ocijenili niti jedan ispit. Upit mora biti neovisan o datumu izvođenja
SELECT sifNastavnik, imeNastavnik, prezNastavnik FROM nastavnik
WHERE sifNastavnik NOT IN (SELECT sifNastavnik FROM ispit
WHERE ocjena>1 AND YEAR(datispit)=YEAR(TODAY) AND MONTH(datispit) IN
(1,2));
sifnastavnik imenastavnik preznastavnik
122 Tin Grabovac
126 Zdravko Budišin
130 Antun Ivan Jonjić
... ukupno 98 zapisa, za 2000. godinu ukupno 74 zapisa

5. Ispisati ime, prezime i datum rođenja studenata koji su bar 200 dana stariji od najmlađeg studenta
SELECT imeStud, prezStud, datRodStud FROM stud
WHERE DATE_ADD(datRodStud, INTERVAL 200 DAY) <= (SELECT MAX(datRodStud)
FROM stud);
imestud prezstud datrodstud
Danijel Marović 21.12.1982
Jozefina Antončić 23.01.1982
Vjeran Brezac 15.04.1982
... ukupno 204 zapisa
6. Ispisati sve podatke o predmetima koji pripadaju organizacionim jedinicama u kojima su zaposleni
nastavnici čije prezime počinje slovom "O".
SELECT * FROM pred WHERE sifOrgjed IN
(SELECT sifOrgjed FROM nastavnik WHERE prezNastavnik LIKE 'O%');
sifpred kratpred nazpred siforgjed
upisanostud brsatitjed
288 INE03O6 Elektronička instrume
100010 15 1
284 ELSKLOP Elektronički sklopovi
100010 10 4
265 ELEL1 Elektronički elementi 100010
21 2
... ukupno 25 zapisa

7. Ispisati oznaku dvorane i kapacitet za sve dvorane čiji je kapacitet veći od broja predmeta za koje
je ta dvorana rezervisana u toku jednog tjedna
SELECT oznDvorana, kapacitet FROM dvorana
WHERE kapacitet > (
SELECT COUNT(sifPred) FROM rezervacija WHERE oznDvorana =
dvorana.oznDvorana);
ozndvorana kapacitet
A001 24
A002 10
A101 39
... ukupno 25 zapisa

8. Ispisati nastavnike čiji je koeficijent za plaću manji od prosječnog koeficijenta svih ostalih
nastavnika koji stanuju u istoj županiji. Ispisati šifru, ime, prezime, koeficijent i naziv mjesta stanovanja
takvih nastavnika
SELECT sifnastavnik, imenastavnik, preznastavnik, koef, nazmjesto
FROM nastavnik INNER JOIN mjesto ON nastavnik.pbrstan = mjesto.pbr
WHERE koef < (
SELECT AVG(koef) FROM nastavnik Ostali INNER JOIN mjesto DrugoM ON
Ostali.pbrstan = DrugoM.pbr
WHERE mjesto.sifZupanija=DrugoM.sifZupanija
AND Ostali.sifNastavnik<>nastavnik.sifNastavnik);
sifnastavnik imenastavnik preznastavnik koef nazmjesto
134 Želimir Somrak
7.10 Virovitica
166 Nino Lipec
3.30 Zagreb
171 Dinko Žubrinić
4.50 Zagreb
... ukupno 51 zapisa

9. Ispisati matični broj, ime i prezime studenata koji niti jedan ispit nisu polagali u danu u tjednu u
kojem su rođeni. Npr. ako je student rođen u utorak, niti na jednom ispitu nije bio utorkom
SELECT mbrstud, imestud, prezstud FROM stud
WHERE NOT EXISTS (
SELECT * FROM ispit WHERE ispit.mbrstud = stud.mbrstud AND
WEEKDAY(ispit.datispit) = WEEKDAY(stud.datrodstud));
mbrstud imestud prezstud
1120 Zdenko Kolac
1121 Danijel Marović
1123 Jozefina Antončić
1124 Tihomir Crnković
1125 Vjeran Brezac
... ukupno 264 zapisa
10. Ispisati šifru, ime i prezime za nastavnike koji stanuju u Dubrovačko-neretvanskoj županiji a
koeficijent za platu im je veći od barem jednog nastavnika koji stanuje u Splitsko-dalmatinskoj županiji
SELECT sifNastavnik, imeNastavnik, prezNastavnik
FROM nastavnik INNER JOIN mjesto ON nastavnik.pbrStan = mjesto.pbr
INNER JOIN zupanija ON mjesto.sifzupanija = zupanija.sifzupanija
WHERE nazzupanija = "Dubrovačko-neretvanska"
AND koef > ANY (
SELECT koef FROM nastavnik INNER JOIN mjesto ON nastavnik.pbrStan =
mjesto.pbr INNER JOIN zupanija ON mjesto.sifzupanija = zupanija.sifzupanija
WHERE nazzupanija = "Splitsko-dalmatinska");
sifNastavnik imenastavnik preznastavnik
146 Franjo Vidaković
150 Ana Kukec
236 Robert Pavlović
195 Lovre Đeri
... ukupno 4 zapisa

11. Ispisati matične brojeve, imena i prezimena studenata koji su položili ispit kod nekog nastavnka
koji niti jednom drugom studentu nije dao pozitivnu ocjenu
SELECT ispit.mbrstud, imestud, prezstud
FROM ispit INNER JOIN stud ON ispit.mbrstud = stud.mbrstud
WHERE ocjena > 1
AND NOT EXISTS (SELECT * FROM ispit ispitP
WHERE ispitP.sifNastavnik = ispit.sifNastavnik AND ocjena > 1
AND ispit.mbrStud <> ispitP.mbrStud);
mbrstud imestud prezstud
1125 Vjeran Brezac
1139 Niko Marušić
1331 Gordan Lacković
1189 Juraj Maček
1159 Katarina Dobrina
... ukupno 5 zapisa

12. Zadane su relacije r1, r2 i r3 sa shemama R1 (A, B, C), R2 (D, E) i R3 (B, C, D, E). Ključ svake
relacije sastavljen je od svih atributa te relacije. Sadržaj svake relacije prikazan je
pomoću ASCII 'unload' datoteke
r1 r2 r3
a#b#c# 5#f# b#c#5#f#
a#d#k# 7#g# m#k#7#g#
a#e#m# 11#e# m#n#9#e#
a#m#k# 11#g# m#k#11#g#
Za pripremu treba napisati rezultat obavljanja svakog od sljedećih zadataka, a zatim za svaki zadatak
napisati po jednu SELECT naredbu kojom će se obaviti zadana operacija. U laboratoriju kreirati
relacije r1, r2 i r3, napuniti ih podacima i testirati pripremljene SELECT naredbe

a) pB, C (r1) Ç pB, C (r3)


pB, C (r1) pB, C (r3) pB, C (r1) Ç pB, C (r3)
b c b C b c
d k m K m k
e m m N
m k

SELECT DISTINCT B,C FROM r1


WHERE EXISTS (SELECT DISTINCT B,C FROM r3 WHERE r3.B=r1.B AND r3.C=r1.C)
;
b) pB (r1) \ pB (r3)
pB (r1) pB (r3) pB (r1) \ pB (r3)
b B d
d M e
e
m

SELECT DISTINCT B FROM r1


WHERE B NOT IN (SELECT DISTINCT B FROM r3) ;

c) pE (r2 >> r3) \ pE (s D > 7 (r3) )

r2 >> r3 pE (r2 >> r3) s D > 7 (r3) pE (s D > 7 pE (r2 >> r3) \ pE (s D > 7 (r3) )
(r3) )
b c 5 f f M n 9 E e f
m k 7 g g M k 11 G g
m k 11 g

SELECT DISTINCT r3.E FROM r2,r3


WHERE r3.D=r2.D AND r3.E=r2.E
AND r3.E NOT IN (SELECT DISTINCT E FROM r3 WHERE D>7);

d) (r1 ´ r2) \ (r1 >> r3)


(r1 ´ r2) (r1 >> r3) (r1 ´ r2) \ (r1 >> r3)
a b c 5 f a b c 5 f a b c 7 g
a d k 5 f a m k 7 g a b c 11 e
a e m 5 f a m k 11 g a b c 11 g
a m k 5 f a d k 5 f
a b c 7 g a d k 7 g
a d k 7 g a d k 11 e
a e m 7 g a d k 11 g
a m k 7 g a e m 5 f
a b c 11 e a e m 7 g
a d k 11 e a e m 11 e
a e m 11 e a e m 11 g
a m k 11 e a m k 5 f
a b c 11 g a m k 11 e
a d k 11 g
a e m 11 g
a m k 11 g

SELECT * FROM r1 vr1,r2


WHERE NOT EXISTS (
SELECT r1.*,r3.D,r3.E FROM r1,r3
WHERE r1.B=r3.B AND r1.C=r3.C
AND r1.A=vr1.A And r1.B=vr1.B AND r1.C=vr1.C AND r3.D=r2.D AND
r3.E=r2.E);

e) s B>'d' Ù ù (C = 'm') ( pB, C (r1)) Ç pB, C (r2 >> r3)

s B>'d' Ù ù (C = 'm') ( pB, C (r1)) pB, C (r2 >> r3) s B>'d' Ù ù (C = 'm') ( pB, C (r1)) Ç pB, C (r2 >>
r3 )
M K B C M K
M K
SELECT DISTINCT B,C FROM r1 WHERE B>'d' AND NOT C='m'
AND EXISTS (SELECT DISTINCT B,C FROM r2,r3 WHERE r2.D=r3.D AND r2.E=r3.E
AND r1.B=r2.B AND r1.C=r2.C)

You might also like