wiki:AdvancedReports

Version 7 (modified by 201082, 21 months ago) ( diff )

--

Напредни извештаи од базата (SQL и складирани процедури)

За секоја компанија приказ на која релација колку завршени резервации има во последната година

-- kompanija | pochnuva_vo | zavrshuva_vo | vo_godina | broj_zavrsheni_rezervacii

select k.kompanija_ime, g_pocnuva.grad_ime as pocnuva_vo, g_zavrshuva.grad_ime as zavrshuva_vo, 
	extract(year from r.datum_pristignuvanje) as vo_godina,
	COUNT(rezervacii.rezervacija_id) as broj_zavrsheni_rezervacii
from kompanii k 
	join vozila v on k.kompanija_id = v.kompanija_id 
	join ruti r on v.vozilo_id = r.vozilo_id 
	join gradovi g_pocnuva on r.zapocnuva_vo = g_pocnuva.grad_id 
	join gradovi g_zavrshuva on r.zavrsuva_vo = g_zavrshuva.grad_id 
	join rezervacii rezervacii on r.ruta_id = rezervacii.ruta_id 
where lower(rezervacii.rezervacija_status)  like 'zavrshena' 
group by 1, 2, 3, 4

Извештај за секоја компанија со број на вработени, вкупна заработувачка, вкупно клиенти, вкупно резервации за секој статус(активна, завршена, откажана, за одобрување)

-- kompanija | broj_vraboteni | vkupna_zarabotka | vkupno_klienti | vkupno_rezervacii | aktivni_rezervacii | zavrsheni_rezervacii | otkazhani_rezervacii | za_odobruvanje_rezervacii

select k.kompanija_ime, 

( select count(distinct v.vraboten_id)
	from vraboteni v
	where v.kompanija_id = k.kompanija_id
) as broj_vraboteni,

coalesce (( select sum(f.faktura_iznos)
	from fakturi f
	join rezervacii r on f.rezervacija_id = r.rezervacija_id 
	join ruti on r.ruta_id = ruti.ruta_id 
	join vozila on ruti.vozilo_id = vozila.vozilo_id 
	join kompanii kk on vozila.kompanija_id = kk.kompanija_id 
	where kk.kompanija_id = k.kompanija_id 
), 0) as vkupna_zarabotka,

( select count(distinct kl.klient_id)
	from klienti kl 
	join rezervacii r on kl.klient_id = r.klient_id 
	join ruti on r.ruta_id = ruti.ruta_id 
	join vozila on ruti.vozilo_id = vozila.vozilo_id 
	join kompanii kk on vozila.kompanija_id = kk.kompanija_id 
	where kk.kompanija_id = k.kompanija_id 
) as vkupno_klienti,

( select count(r.rezervacija_id)
	from rezervacii r
	join ruti on r.ruta_id = ruti.ruta_id 
	join vozila on ruti.vozilo_id = vozila.vozilo_id 
	join kompanii kk on vozila.kompanija_id = kk.kompanija_id 
	where kk.kompanija_id = k.kompanija_id 
) as vkupno_rezervacii,

( select count(r.rezervacija_id)
	from rezervacii r
	join ruti on r.ruta_id = ruti.ruta_id 
	join vozila on ruti.vozilo_id = vozila.vozilo_id 
	join kompanii kk on vozila.kompanija_id = kk.kompanija_id 
	where kk.kompanija_id = k.kompanija_id and lower(r.rezervacija_status) like 'aktivna'
) as vkupno_aktivni_rezervacii,

( select count(r.rezervacija_id)
	from rezervacii r
	join ruti on r.ruta_id = ruti.ruta_id 
	join vozila on ruti.vozilo_id = vozila.vozilo_id 
	join kompanii kk on vozila.kompanija_id = kk.kompanija_id 
	where kk.kompanija_id = k.kompanija_id and lower(r.rezervacija_status) like 'zavrshena'
) as vkupno_zavrsheni_rezervacii,

( select count(r.rezervacija_id)
	from rezervacii r
	join ruti on r.ruta_id = ruti.ruta_id 
	join vozila on ruti.vozilo_id = vozila.vozilo_id 
	join kompanii kk on vozila.kompanija_id = kk.kompanija_id 
	where kk.kompanija_id = k.kompanija_id and lower(r.rezervacija_status) like 'otkazhana'
) as vkupno_otkazhani_rezervacii,

( select count(r.rezervacija_id)
	from rezervacii r
	join ruti on r.ruta_id = ruti.ruta_id 
	join vozila on ruti.vozilo_id = vozila.vozilo_id 
	join kompanii kk on vozila.kompanija_id = kk.kompanija_id 
	where kk.kompanija_id = k.kompanija_id and lower(r.rezervacija_status) like 'za odobruvanje'
) as vkupno_za_odobruvanje_rezervacii

from kompanii k;

За секоја компанија, приказ на сите клиенти и вкупната сума која ја имаат потрошено во компанијата

-- kompanija | klient_ime | klient_prezime | suma_fakturi
-- подредени според компанија, па според сума на фактури на клиентот во опаѓачки редослед

select k.kompanija_ime, 
	klient.klient_ime,
	klient.klient_prezime ,
	SUM(f.faktura_iznos) as suma_fakturi
from kompanii k 
	join vozila v on k.kompanija_id = v.kompanija_id 
	join ruti r on v.vozilo_id = r.vozilo_id 
	join rezervacii rezervacija on r.ruta_id = rezervacija.ruta_id 
	join klienti klient on rezervacija.klient_id = klient.klient_id
	join fakturi f on rezervacija.rezervacija_id = f.rezervacija_id 
group by k.kompanija_id, klient.klient_id
order by k.kompanija_id, suma_fakturi desc;

За секоја компанија, приказ на релација, приказ на број на активни или завршени резервации на таа релација и приказ на вкупна заработка направена од тие резервации, во последните 30 дена

-- kompanija | ruta_pocnuva_vo | ruta_zavrshuva_vo | vkupna_zarabotka | broj_rezervacii
-- подредени според вкупна заработка во опаѓачки редослед

select k.kompanija_ime, 
	g_pocnuva.grad_ime as ruta_pocnuva_vo,
	g_zavrsuva.grad_ime as ruta_zavrshuva_vo, 
	SUM(f.faktura_iznos) as vkupna_zarabotka, COUNT(rezervacii.rezervacija_id) as broj_rezervacii
from kompanii k 
	join vozila v on k.kompanija_id = v.kompanija_id 
	join ruti r on v.vozilo_id = r.vozilo_id 
	join gradovi g_pocnuva on r.zapocnuva_vo = g_pocnuva.grad_id 
	join gradovi g_zavrsuva on r.zavrsuva_vo = g_zavrsuva.grad_id 
	join rezervacii rezervacii on r.ruta_id = rezervacii.ruta_id 
	join fakturi f on rezervacii.rezervacija_id = f.rezervacija_id 
where 
	r.datum_poagjanje between now()-interval '30 day' and now() and
	r.datum_pristignuvanje between now()-interval '30 day' and now() and 
	(lower(rezervacii.rezervacija_status) like 'aktivna' or lower(rezervacii.rezervacija_status) like 'zavrshena')
group by 1, 2, 3
order by vkupna_zarabotka desc;

Note: See TracWiki for help on using the wiki.