wiki:AdvancedReports

Version 12 (modified by 201081, 16 months ago) ( diff )

--

Напредни извештаи од базата (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 денари и производи кои што се се уште под гаранција

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 

Извештај за категориите,број на производи по категорија според времетраењето на гаранцијата

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

Извештај за компаниите,број на купени производи од секоја компанија според тромесечие

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


Attachments (3)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.