wiki:AdvancedReports

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

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

-- kompanija_id | kompanija_ime | pocnuva_vo_id | pochnuva_vo_ime | zavrshuva_vo_id | zavrshuva_vo_ime | vo_godina | broj_zavrsheni_rezervacii

select k.kompanija_id, k.kompanija_ime, g_pocnuva.grad_id as pocnuva_vo_id, g_pocnuva.grad_ime as pocnuva_vo, g_zavrsuva.grad_id as zavrsuva_vo_id, 
g_zavrsuva.grad_ime as zavrsuva_vo, extract(year from r.datum_pristignuvanje) as vo_godina, COUNT(rezervacii.rezervacija_id) as broj_zavrseni_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 
where lower(rezervacii.rezervacija_status)  like 'завршена' 
group by 1, 2, 3, 4, 5, 6, 7
order by vo_godina desc;

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

-- kompanija | broj_vraboteni | vkupna_zarabotka | vkupno_klienti | vkupno_rezervacii | aktivni_rezervacii | zavrseni_rezervacii | otkazani_rezervacii | za_odobruvanje_rezervacii

select k.kompanija_id, 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 'активна'
) 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 'завршена'
) as vkupno_zavrseni_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 'откажана'
) as vkupno_otkazani_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 'за одобрување'
) as vkupno_za_odobruvanje_rezervacii

from kompanii k;

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

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

select k.kompanija_id, k.kompanija_ime, klient.klient_id, klient.klient_ime, klient.klient_prezime , 
SUM(f.faktura_iznos) as suma_fakturi, COUNT( rezervacija.rezervacija_id ) as broj_na_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 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_id | kompanija_ime | ruta_pocnuva_vo | ruta_zavrshuva_vo | vkupna_zarabotka | broj_rezervacii
-- подредени според вкупна заработка во опаѓачки редослед

select k.kompanija_id, k.kompanija_ime, g_pocnuva.grad_ime as ruta_pocnuva_vo, g_zavrsuva.grad_ime as ruta_zavrsuva_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 '1 month' and now() and
	r.datum_pristignuvanje between now()-interval '1 month' and now() and 
	(lower(rezervacii.rezervacija_status) like 'активна' or lower(rezervacii.rezervacija_status) like 'завршена')
group by 1, 2, 3, 4
order by vkupna_zarabotka desc;

Last modified 22 months ago Last modified on 01/10/23 19:30:03
Note: See TracWiki for help on using the wiki.