﻿use STUDIJE

--Vise tabela kao izvori podataka (Dekartov, INNER JOIN, LEFT JOIN, RIGHT JOIN)

-- 1. Izlistati imena nastavnika i sifre predmeta koje predaju

-- I nacin

/*
	Dekartov filtrirani
*/

	select Nastavnici.Imen, Angazovanje.Spred
	from Nastavnici, Angazovanje
	where Nastavnici.Snast = Angazovanje.Snast


-- II nacin

/*
	INNER JOIN
*/

	select n.Imen, a.Spred
	from Nastavnici n join Angazovanje a on n.Snast = a.Snast

/*
	LEFT JOIN
*/

-- 2. Izlistati imena nastavnika i sifre predmeta koje predaju (u skupu trebaju da se nadju i nastavnici koji nisu angazovani)

	select n.Imen, a.Spred
	from Nastavnici n LEFT join Angazovanje a on n.Snast = a.Snast

-- 3. spisak nastavnika koji nisu angazovani.

	select n.Snast 
	from Nastavnici n left join Angazovanje a on n.Snast = a.Snast
	where a.Snast is null

-- 4. spisak nastavnika i predmeta (samo sifre) koji dele predmet sa jos nekim

	select a1.Snast, a1.Spred
	from Angazovanje a1 join Angazovanje a2 on a1.Spred = a2.Spred and a1.Snast <> a2.Snast

-- 5. Izlistati imena nastavnika i NAZIVE predmeta koje predaju
		
	select n.Imen, p.NAZIVP
	from Nastavnici n join Angazovanje a on n.Snast = a.Snast
				      join PREDMETI p on a.Spred = p.SPRED

-- 6. Spisak brucosa koji imaju druga na fakultetu

	select s1.Imes, s2.Imes
	from Studenti s1 join Studenti s2 on (s1.Upisan = s2.Upisan and s1.Mesto = s2.Mesto and s1.Indeks != s2.Indeks)

-- 7. Spisak studenata (indeks, upisan, ime studenta) koji imaju bar jedan polozen ispit

	select distinct s.Indeks, s.Upisan, s.Imes
	from Studenti s join Prijave p on s.Indeks = p.Indeks and s.Upisan = p.Upisan
	where p.Ocena > 5 

-- 8. Spisak studenata koji imaju prosek veci od 7.5

	select s.Indeks, s.Upisan, avg(p.Ocena * 1.0)
	from Studenti s join Prijave p on s.Indeks = p.Indeks and s.Upisan = p.Upisan
	where p.Ocena > 5 
	group by s.Indeks, s.Upisan
	having avg(p.Ocena * 1.0) > 7.5

-- 9. Maksimalna ocena za svaki predmet

	select p2.Spred, p2.NAZIVP, max(ocena) 
	from prijave p1 join PREDMETI p2 on p1.Spred = p2.SPRED
	group by p2.NAZIVP, p2.Spred