wiki:AdvancedReports

Version 2 (modified by 201075, 21 months ago) ( diff )

--

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

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

-- kompanija | pochnuva_od | zavrshuva_vo | broj_zavrsheni_rezervacii

select k.kompanija_ime, 
       gp.grad_ime as pocnuva_vo,
       gz.grad_ime as zavrshuva_vo, 
       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 gp on r.zapocnuva_vo = gp.grad_id 
     join gradovi gz on r.zavrsuva_vo = gz.grad_id 
     join rezervacii rezervacii on r.ruta_id = rezervacii.ruta_id 
where lower(rezervacii.rezervacija_status) like 'zavrshena' 
     and r.datum_pristignuvanje between now()-interval '1 year' and now()
group by 1, 2, 3

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

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_zarabotuvachka,

( 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 

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

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 1, klient.klient_id

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

select k.kompanija_ime, 
       gA.grad_ime as pocnuva_vo,
       gB.grad_ime as zavrsuva_vo,
       SUM(f.faktura_iznos) as vkupna_suma,
       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 gA on r.zapocnuva_vo = gA.grad_id
       join gradovi gB on r.zavrsuva_vo = gB.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()
group by 1, 2, 3
order by vkupna_suma desc

Note: See TracWiki for help on using the wiki.