--Koliko je svake godine odigrano utakmica. (godina, broj_odigranih_utakmica) select * from utakmice select * from sezona select s.godina, count(*) from utakmice u join sezona s on u.id_sezone = s.id group by s.godina --Igrač koji je sklopio ugovor na najduži period. --(id_igraca, period_u_danima) go create view trajanje_ugovora as select id_igraca, DATEDIFF(day, datum1, datum2) period_u_danima from ugovori go select t1.id_igraca, t1.period_u_danima from trajanje_ugovora t1 left join trajanje_ugovora t2 on t1.period_u_danima < t2.period_u_danima where t2.id_igraca is null select * from trajanje_ugovora where period_u_danima = (select max(period_u_danima) from trajanje_ugovora) go create view maximum_dana as select max(period_u_danima) maximim from trajanje_ugovora go select tu.* from (select max(period_u_danima) maximim from trajanje_ugovora) md join trajanje_ugovora tu on md.maximim = tu.period_u_danima --Za svakog igrača koliko je postigao ukupno golova --računajući i autogolove (ugnježdeni). --(ime, broj_golova) - nije dozvoljeno koristiti join mehanizam. select * from igraci select * from golovi select * from timovi,igraci select i.ime,count(*) from igraci i join golovi g on i.id=g.id_igraca group by i.id,i.ime select *, (select count(*) from golovi g where g.id_igraca = i.id ) broj_golova from igraci i go create view utakmice_po_godinama as select u.id_domacina, u.id_gosta, s.godina from utakmice u join sezona s on u.id_sezone = s.id go /* Spisak fudbalera koji su odigrali više od 3 utakmice u nekoj od sezona. (godina, id_igraca, broj_utakmica) */ select upg.godina, ug.id_igraca, count(*) broj_utakmica from utakmice_po_godinama upg join ugovori ug on (upg.id_domacina = ug.id_tima or upg.id_gosta = ug.id_tima) and upg.godina between datepart(year,ug.datum1) and datepart(year,ug.datum2) group by upg.godina, ug.id_igraca having count(*) > 3 select * from utakmice select * from ugovori /* 1, 2, 2018, 1 1, 2, 2018, 3 1, 2, 2018, 5 1, 3, 2019, 1 */ --Rezultat svake utakmice. --(id_utakmice, nazivTimaDomacina, nazivTimaGosta, rezultat) /*id_utakmice, idTima, brojGolova 1, 1, 2 1, 2, 0 2, 1, 2 */ select * from utakmice select * from golovi --za svaki tim, koliko je postigao golova na utakmici go create view broj_golova as select u.id id_utakmice, g.id_tima, count(g.id_tima) br_golova from utakmice u left join golovi g on u.id = g.id_utakmice group by u.id, g.id_tima go --(id_utakmice, nazivTimaDomacina, nazivTimaGosta, rezultat) create view rezultati as select id, (select naziv from timovi where id = u.id_domacina) nazivTimaDomacina, (select naziv from timovi where id = u.id_gosta) nazivTimaGosta, (select br_golova from broj_golova where id_utakmice = u.id and id_tima = u.id_domacina) broj_golova_domacina, (select br_golova from broj_golova where id_utakmice = u.id and id_tima = u.id_gosta) broj_golova_gosta from utakmice u select id, nazivTimaDomacina, nazivTimaGosta,CONCAT( case when broj_golova_domacina is null then 0 else broj_golova_domacina end, ':' , case when broj_golova_gosta is null then 0 else broj_golova_gosta end) rezultat from rezultati --(id_utakmice, nazivTimaDomacina, nazivTimaGosta, rezultat)