= **Напредни извештаи од базата (SQL и складирани процедури)** === **Извештаи за клиент според тромесечие, број на купени производи и потрошена сума** {{{#!sql SELECT DISTINCT u.korisnicko_ime, CASE WHEN tabela.quarter=1 THEN tabela.kupeni_proizvodi ELSE 0 END AS prv_kvartal, CASE WHEN tabela.quarter=2 THEN tabela.kupeni_proizvodi ELSE 0 END AS vtor_kvartal, CASE WHEN tabela.quarter=3 THEN tabela.kupeni_proizvodi ELSE 0 END AS tret_kvartal, CASE WHEN tabela.quarter=4 THEN tabela.kupeni_proizvodi ELSE 0 END AS cetvrt_kvartal, CASE WHEN tabela.quarter=1 THEN tabela.suma ELSE 0 END AS prv_kvartal_suma, CASE WHEN tabela.quarter=2 THEN tabela.suma ELSE 0 END AS vtor_kvartal_suma, CASE WHEN tabela.quarter=3 THEN tabela.suma ELSE 0 END AS tret_kvartal_suma, CASE WHEN tabela.quarter=4 THEN tabela.suma ELSE 0 END AS cetvrt_kvartal_suma FROM naracki as n JOIN kupuvaci as k on k.korisnicko_ime=n.korisnicko_ime JOIN korisnici AS u ON k.korisnicko_ime = u.korisnicko_ime JOIN parce_e_del_od_naracki as pdm on pdm.id_naracka=n.id_naracka join parce as p on pdm.id_parce =p.id_parce join proizvodi as pro on p.id_proizvod=pro.id_proizvod JOIN cena AS c ON c.id_proizvod=pro.id_proizvod JOIN ( SELECT DISTINCT c2.korisnicko_ime, extract(quarter FROM n.data_na_naracka) AS quarter, sum(n.suma) AS suma, count(n.id_naracka) AS kupeni_proizvodi FROM naracki AS n JOIN parce_e_del_od_naracki as pdm on pdm.id_naracka=n.id_naracka join parce as p on pdm.id_parce =p.id_parce join proizvodi as pro on p.id_proizvod=pro.id_proizvod JOIN cena AS c ON c.id_proizvod=pro.id_proizvod JOIN kupuvaci AS c2 ON c2.korisnicko_ime = n.korisnicko_ime GROUP BY 1,2 ) AS tabela ON u.korisnicko_ime = tabela.korisnicko_ime }}} === **Извештај за вработените,нивната најдобра нарачка,бројот на нарачки што ги направиле и нарачката која што им има најголема гаранција ** {{{#!sql select d.korisnicko_ime, max(na.suma) as najdobra_naracka, broj.broj_naracki as broj_naracki,max(najgolema_garancija.garan) as najgolema_garancija from dostavuvaci d left join ( select distinct d.korisnicko_ime as dostavuvac,k.e_posta as email, d2.id_dostavuvanja as broj_dostava ,n.suma from dostavuvaci d left join korisnici k on k.korisnicko_ime=d.korisnicko_ime left join dostavuvanja d2 on d2.korisnicko_ime = d.korisnicko_ime left join naracki n on n.id_naracka =d2.id_naracka left join parce_e_del_od_naracki pedon on pedon.id_naracka =n.id_naracka left join parce p3 on p3.id_parce=pedon.id_parce left join proizvodi p4 on p4.id_proizvod=p3.id_proizvod left join cena c on c.id_proizvod=p4.id_proizvod ) as na on d.korisnicko_ime = na.dostavuvac left join ( select d.korisnicko_ime,n.e_posta,count(dost.id_dostavuvanja) as broj_naracki from dostavuvaci as d join korisnici as n on d.korisnicko_ime=n.korisnicko_ime join dostavuvanja as dost on d.korisnicko_ime=dost.korisnicko_ime group by d.korisnicko_ime,n.korisnicko_ime ) as broj on d.korisnicko_ime = broj.korisnicko_ime left join ( select d.korisnicko_ime as dostavuvac,(g.datum_do-g.datum_od) as garan from dostavuvaci d left join dostavuvanja d2 on d2.korisnicko_ime = d.korisnicko_ime left join naracki n on n.id_naracka =d2.id_naracka left join parce_e_del_od_naracki pedon on pedon.id_naracka =n.id_naracka left join parce p3 on p3.id_parce=pedon.id_parce left join proizvodi p4 on p4.id_proizvod=p3.id_proizvod left join garancija g on g.id_proizvod =p4.id_proizvod ) as najgolema_garancija on najgolema_garancija.dostavuvac=d.korisnicko_ime group by d.korisnicko_ime,broj.broj_naracki order by najdobra_naracka desc }}} === **Извештај за категориите,број на производи по категорија според времетраењето на гаранцијата ** {{{#!sql select k.ime , coalesce(prv.zbir_1,0) as pomalku_od_godina, coalesce(vtor.zbir_2,0) as godina, coalesce(tret.zbir_3,0) as poveke_od_godina from kategorii k join proizvodi p on p.id_proizvod=k.id_proizvod join garancija g on g.id_proizvod=p.id_proizvod left join ( select k.ime ,p.ime_proizvod , count(p.id_proizvod)*p.kolicina as zbir_1 from kategorii k join proizvodi p on p.id_proizvod=k.id_proizvod join garancija g on g.id_proizvod=p.id_proizvod and (g.datum_do-g.datum_od) < interval'365 days' group by k.ime,p.ime_proizvod,p.kolicina ) as prv on k.ime = prv.ime left join ( select k.ime ,p.ime_proizvod ,count(p.id_proizvod)*p.kolicina as zbir_2 from kategorii k join proizvodi p on p.id_proizvod=k.id_proizvod join garancija g on g.id_proizvod=p.id_proizvod and (g.datum_do-g.datum_od) between interval'365 days' and 2*interval'365 days' group by k.ime,p.ime_proizvod,p.kolicina ) as vtor on k.ime = vtor.ime left join ( select k.ime ,p.ime_proizvod , count(p.id_proizvod)*p.kolicina as zbir_3 from kategorii k join proizvodi p on p.id_proizvod=k.id_proizvod join garancija g on g.id_proizvod=p.id_proizvod and (g.datum_do-g.datum_od) > interval' 2 years' group by k.ime,p.ime_proizvod,p.kolicina ) as tret on k.ime=tret.ime group by k.ime, prv.zbir_1, vtor.zbir_2, tret.zbir_3 }}} === **Извештај за компаниите,број на купени производи од секоја компанија според тромесечие ** {{{#!sql select k.ime , coalesce(prv.zbir_1,0) as prv_kvartal, coalesce(vtor.zbir_2,0) as vtor_kvartal, coalesce(tret.zbir_3,0) as tret_kvartal, coalesce(cetvrt.zbir_4,0) as cetvrt_kvartal from kompanija k join proizvodi p on p.ime = k.ime join parce as par on par.id_proizvod =p.id_proizvod join parce_e_del_od_naracki pedon on pedon.id_parce =par.id_parce join naracki as n on n.id_naracka =pedon.id_parce left join ( select k.ime ,p.ime_proizvod , count(pedon.id_parce) as zbir_1 from kompanija k join proizvodi p on p.ime = k.ime join parce as par on par.id_proizvod =p.id_proizvod join parce_e_del_od_naracki pedon on pedon.id_parce =par.id_parce join naracki as n on n.id_naracka =pedon.id_naracka and n.data_na_naracka between to_date(concat('01-01-',extract(year from now())),'dd-mm-yyyy') and to_date(concat('31-03-',extract(year from now())),'dd-mm-yyyy') group by k.ime,p.ime_proizvod ) as prv on k.ime = prv.ime left join ( select k.ime ,p.ime_proizvod ,count(pedon.id_parce) as zbir_2 from kompanija k join proizvodi p on p.ime = k.ime join parce as par on par.id_proizvod =p.id_proizvod join parce_e_del_od_naracki pedon on pedon.id_parce =par.id_parce join naracki as n on n.id_naracka =pedon.id_naracka and n.data_na_naracka between to_date(concat('01-04-',extract(year from now())),'dd-mm-yyyy') and to_date(concat('30-06-',extract(year from now())),'dd-mm-yyyy') group by k.ime,p.ime_proizvod ) as vtor on k.ime = vtor.ime left join ( select k.ime ,p.ime_proizvod , count(pedon.id_parce) as zbir_3 from kompanija k join proizvodi p on p.ime = k.ime join parce as par on par.id_proizvod =p.id_proizvod join parce_e_del_od_naracki pedon on pedon.id_parce =par.id_parce join naracki as n on n.id_naracka =pedon.id_naracka and n.data_na_naracka between to_date(concat('01-07-',extract(year from now())),'dd-mm-yyyy') and to_date(concat('30-09-',extract(year from now())),'dd-mm-yyyy') group by k.ime,p.ime_proizvod ) as tret on k.ime=tret.ime left join ( select k.ime ,p.ime_proizvod, count(pedon.id_parce) as zbir_4 from kompanija k join proizvodi p on p.ime = k.ime join parce as par on par.id_proizvod =p.id_proizvod join parce_e_del_od_naracki pedon on pedon.id_parce =par.id_parce join naracki as n on n.id_naracka =pedon.id_naracka and n.data_na_naracka between to_date(concat('01-10-',extract(year from now())),'dd-mm-yyyy') and to_date(concat('31-12-',extract(year from now())),'dd-mm-yyyy') group by k.ime,p.ime_proizvod ) as cetvrt on k.ime=cetvrt.ime group by k.ime, prv.zbir_1, vtor.zbir_2, tret.zbir_3, cetvrt.zbir_4 }}}