You are on page 1of 5

SQL UPITI, POGLEDI I USKLADIŠTENE PROCEDURE

PRIMER: Baza podataka FAKULTET

student
brojIndeksa mesto
ime ptt
prezime naziv
ulicaBrStanuje
datumRodjenja
smer
ispit
pttStanuje
rbPolaganja
brojIndeksa
idPredmeta
idNastavnika
datum
ocena
slusao
bodova
brojIndeksa

idPredmeta

nastavnik
idNastavnika
ime
pr edaje
prezime
pr edmet idNastavnika
zvanje
idPredmeta idPredmeta
osnovicaPlata
nazivPredmeta brojCasova
koeficijentPlata
idKatedre
putniTrosakMesec
pttStanuje

katedr a
idKatedre

naziv

1a. Izdvojiti podatke o studentima koji su odslušali predmet Baze podataka 1.

SELECT student.prezime, student.ime, student.brojIndeksa,


predmet.nazivPredmeta, student.smer
FROM predmet INNER JOIN
slusao ON predmet.idPredmeta = slusao.idPredmeta INNER JOIN
student ON slusao.brojIndeksa = student.brojIndeksa
WHERE (predmet.nazivPredmeta = 'baze podataka 1')

1b. Koliko studenata je odslušalo predmet Baze podataka 1.

SELECT predmet.nazivPredmeta,
COUNT(slusao.brojindeksa) as [slusalo studenata]
FROM predmet INNER JOIN
slusao ON predmet.idPredmeta = slusao.idPredmeta INNER JOIN
student ON slusao.brojIndeksa = student.brojIndeksa
WHERE (predmet.nazivPredmeta = 'baze podataka 1')
GROUP BY predmet.nazivPredmeta
1c. Koliko studenata smera softversko inženjerstvo je odslušalo predmet Baze
podataka 1.

SELECT predmet.nazivPredmeta, smer,


COUNT(slusao.brojindeksa) as [slusalo studenata]
FROM predmet INNER JOIN
slusao ON predmet.idPredmeta = slusao.idPredmeta INNER JOIN
student ON slusao.brojIndeksa = student.brojIndeksa
WHERE smer='Softversko inženjerstvo' AND
(predmet.nazivPredmeta = 'Baze podataka 1')
GROUP BY predmet.nazivPredmeta, smer

SELECT COUNT(slusao.brojindeksa) as [slusalo studenata BP1]


FROM predmet INNER JOIN
slusao ON predmet.idPredmeta = slusao.idPredmeta INNER JOIN
student ON slusao.brojIndeksa = student.brojIndeksa
WHERE smer='Softversko inženjerstvo' AND
(predmet.nazivPredmeta = 'Baze podataka 1')

1d. Izdvojiti podatke o studentima koji su položili predmet Baze podataka 1.

SELECT predmet.nazivPredmeta,
COUNT(slusao.brojindeksa) as [slusalo studenata]
FROM predmet INNER JOIN
slusao ON predmet.idPredmeta = slusao.idPredmeta INNER JOIN
student ON slusao.brojIndeksa = student.brojIndeksa
GROUP BY predmet.nazivPredmeta
HAVING (predmet.nazivPredmeta = 'baze podataka 1')

1e. Koliko je bilo “padanja” na ispitima?

SELECT COUNT(brojindeksa) FROM ispit


where ocena<6

1f. Koliko ima položenih ispita?

SELECT COUNT(brojindeksa) FROM ispit


where ocena>5

1g. Prikazati podatke o svim studentima koji su položili neki ispit.

SELECT student.prezime, student.ime, student.brojIndeksa,


predmet.nazivPredmeta, ispit.ocena, ispit.datum, ispit.bodova
FROM ispit INNER JOIN
predmet ON ispit.idPredmeta = predmet.idPredmeta INNER JOIN
student ON ispit.brojIndeksa = student.brojIndeksa
WHERE (predmet.nazivPredmeta = 'Baze podataka 1') AND (ispit.ocena >= 6 AND
ispit.ocena < 11)
2. Napisati pogled za formiranje spiska studenata koji su položili Baze podataka 1.
Napisati komande za izmenu, poziv i brisanje pogleda.

CREATE VIEW [Polozili Baze podataka 1]


AS
SELECT student.prezime, student.ime,
student.brojIndeksa, predmet.nazivPredmeta,
ispit.ocena, ispit.datum, ispit.bodova
FROM ispit INNER JOIN
predmet ON ispit.idPredmeta = predmet.idPredmeta INNER JOIN
student ON ispit.brojIndeksa = student.brojIndeksa
WHERE (predmet.nazivPredmeta = 'Baze podataka 1')
AND (ispit.ocena >= 6 AND ispit.ocena < 11)

SELECT * FROM [Polozili Baze podataka 1]


ORDER BY prezime asc

SELECT brojindeksa
FROM [Polozili Baze podataka 1]
ORDER BY prezime asc

ALTER VIEW [Polozili Baze podataka 1]


AS
SELECT student.prezime, student.ime,
student.brojIndeksa, predmet.nazivPredmeta,
smer,
ispit.ocena, ispit.datum, ispit.bodova
FROM ispit INNER JOIN
predmet ON ispit.idPredmeta = predmet.idPredmeta INNER JOIN
student ON ispit.brojIndeksa = student.brojIndeksa
WHERE (predmet.nazivPredmeta = 'Baze podataka 1')
AND (ispit.ocena >= 6 AND ispit.ocena < 11)

3. Napisati uskladištenu proceduru za kreiranje spiska studenata koji studiraju na


istom smeru.

CREATE PROCEDURE [Studenti na smeru]


@smer varchar(50)
AS
SELECT prezime, ime, brojIndeksa, smer
FROM student
WHERE smer=@smer

EXECUTE [Studenti na smeru] 'Softversko inženjerstvo'


4. Kreirati pogled za prikaz ličnih podataka svih studenta: prezime, ime, smer studija,
datum rođenja, broj indeksa i kompletnu adresu stanovanja. Spisak sortirati po
smeru, a u okviru svakog smera po prezimenu i imenu studenta.

CREATE VIEW [Svi studenti]


AS
SELECT student.prezime, student.ime, student.smer, student.datumRodjenja,
student.brojIndeksa, student.ulicaBrStanuje, student.pttStanuje, mesto.naziv
FROM mesto INNER JOIN
student ON mesto.ptt = student.pttStanuje

SELECT * FROM [Svi studenti]


ORDER BY smer asc, prezime, ime

SELECT smer, prezime, ime, brojIndeksa


FROM [Svi studenti]
ORDER BY smer asc, prezime, ime

5. Kreirati proceduru za

CREATE PROCEDURE [Polozili predmet]


@pr varchar(50)
AS
SELECT student.prezime, student.ime,
student.brojIndeksa, predmet.nazivPredmeta,
ispit.ocena, ispit.datum, ispit.bodova
FROM ispit INNER JOIN
predmet ON ispit.idPredmeta = predmet.idPredmeta INNER JOIN
student ON ispit.brojIndeksa = student.brojIndeksa
WHERE (predmet.nazivPredmeta = @pr)
AND (ispit.ocena >= 6 AND ispit.ocena < 11)

EXECUTE [Polozili predmet] 'Metode programiranja'


DROP PROCEDURE [Polozili predmet];

EXECUTE [Polozili predmet]

6. Napisati upit za prikaz podataka o predmetima koje, sa određenim fondom časova,


predaju nastavnici. Izdvojiti sledeće podatke: prezime i ime nastavnika, naziv
predmeta, nedeljni fond časova za taj predmet, naziv katedre kojoj pripada taj
predmet.

SELECT nastavnik.prezime, nastavnik.ime, predmet.nazivPredmeta,


predaje.brojCasova, katedra.naziv
FROM predaje INNER JOIN
nastavnik ON predaje.idNastavnika = nastavnik.idNastavnika INNER
JOIN
predmet ON predaje.idPredmeta = predmet.idPredmeta INNER JOIN
katedra ON predmet.idKatedre = katedra.idKatedre
7. Prikazati nastavnike čija su mesečna primanja veća od prosečnih mesečnih
primanja svih nastavnika.

8. Prikazati nastavnike čija je osnovica za platu veća od prosečne osnovice svih


nastavnika koji imaju isto zvanje.

9. Koji nastavnici imaju najveću platu?

10. Koji nastavnici imaju najmanju platu?

11. Izlistati sve nastavnike osim onih koji imaju najveću platu.

12. Koji student ima najmanju prosečnu ocenu?

Zadaci za aktivnost 2:

1) Kreirati uskladištenu proceduru za izdvojanje podataka potrebnih za formiranje


uverenja o položenim ispitima za jednog studenta.

2) Izračunati broj položenih ispita, prosečnu ocenu, prosečan broj poena ostvarenih
na ispitima svih studenata čiji je prosek između 8 i 9. Spisak sortirati po prosečnoj
oceni od najveće do najmanje.

3) Kreirati pogled za izračunavanje koliko predmeta pripada svakoj katedri.

4) Izdvojiti prezime, ime, zvanja i godišnja primanja onih nastavnika čija su ukupna
godišnja primanja veća od ukupnih godišnjih primanja Žarka Mitrovića.

You might also like