= **Напредни извештаи од базата (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 }}} === **Вработен кој извршил достава на најмногу нарачки, нарачки кои се доставени за пократко од 1 месец, нарачки кои се над 2000 денари и производи кои што се се уште под гаранција** {{{#!sql drop view if exists vkupen_broj_naracki; create view vkupen_broj_naracki as select n.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; select vbn.korisnicko_ime,vbn.e_posta, vbn.broj_naracki as first from vkupen_broj_naracki as vbn where vbn.broj_naracki = (select max(broj_naracki) from vkupen_broj_naracki); select d.id_dostavuvanja ,d.korisnicko_ime , data_na_dostavuvanje as vreme_na_dostava, n.suma as suma_na_proizvod, g.datum_od as garancija from dostavuvanja d left join naracki n on d.id_naracka =n.id_naracka and n.suma > 2000 left join parce p on p.id_parce=n.id_naracka left join proizvodi p2 on p.id_proizvod=p2.id_proizvod left join garancija g on g.id_proizvod=p2.id_proizvod where data_na_dostavuvanje between data_na_naracka and data_na_naracka + interval '1 month' and now() between g.datum_od and g.datum_do group by 1,2,3,4,5 }}} === **Извештај за сите достапни производи,локацијата на која се наоѓаат,нивната цена,гаранцијата доколку се под гаранција,времетраење на гаранцијата,бројот на коментари за секој од нив и името на компанијата и категоријата во која се наоѓаат** {{{#!sql select p.id_proizvod ,p.ime_proizvod , p.kolicina,p.boja,p.karakteristiki, m.lokacija, c.iznos,g.shifra,g.datum_od,g.datum_do , (select avg(g.datum_do-g.datum_od) )as prosek_garancija ,count( (p.id_proizvod,k3.korisnicko_ime)) as broj_komentari, k4.ime as ime_kompanija, k5.ime as kategorija from proizvodi as p left join parce as pr on pr.id_proizvod=p.id_proizvod left join parce_dostapno_vo_magacini as pdm on pr.id_parce=pdm.id_parce left join magacini as m on m.id_magacin=pdm.id_magacin left join cena as c on c.id_proizvod=p.id_proizvod left join garancija g on g.id_proizvod =p.id_proizvod left join komentari k on k.id_proizvod =p.id_proizvod left join kupuvaci k2 on k2.korisnicko_ime =k.korisnicko_ime left join korisnici k3 on k3.korisnicko_ime= k2.korisnicko_ime left join kompanija k4 on k4.ime =p.ime left join kategorii as k5 on k5.id_proizvod=p.id_proizvod group by p.id_proizvod,m.lokacija,c.iznos,g.shifra,k4.ime,k5.ime }}} === **Извештај за сите компании и од која компанија биле купени најмалку производи, попустот, просек на цената на производите, купувачи со број нарачани парчиња од компанијата** {{{#!sql select komp.ime as ime_kompanija, p.ime_proizvod as tip_proizvod , kolicina as dostapen_vo_kolicina , kat.ime as ime_kategorija, avg(iznos) as prosek_cena, count((pedon.id_parce,pedon.id_naracka)) as broj_naracki, count((n.korisnicko_ime,n.id_naracka)) as kupuvac_broj_naracani, count((pdvm.id_magacin,pdvm.id_parce)) as dostapno_vo_magacin from proizvodi p left join kompanija komp on p.ime = komp.ime left join kategorii kat on p.id_proizvod = kat.id_proizvod left join parce par on p.id_proizvod = par.id_proizvod left join parce_e_del_od_naracki pedon on par.id_parce = pedon.id_parce left join komentari k on p.id_proizvod=k.id_proizvod left join kupuvaci k2 on k.korisnicko_ime = k2.korisnicko_ime left join naracki n on n.korisnicko_ime = k2.korisnicko_ime left join parce_dostapno_vo_magacini pdvm on par.id_parce = pdvm.id_parce left join magacini m on pdvm.id_magacin=m.id_magacin left join cena c on p.id_proizvod=c.id_proizvod and c.popust > 1 group by 1,2,3,4 order by kolicina }}}