Напредни извештаи од базата (SQL и складирани процедури)
Местоположба на автомобили, при што со едно query имаме податоци за која компанија, кој бизнис корисник, брендот на автомобилот, моделот, дали е достапна, вид на автомобил (mini, big, hatchback),тип на менувач (автоматик, мануелен), боја на автомобил и град во кој се наоѓа автомобилот
select insq.company_name, insq.username,
f.brand, f.model_name, f.valid_thru,
f.is_available, f.vehicle_type,
f.transmission, f.color,
f.city
from (
select c.company_name,u.username, c.company_id
from companies c
join business_users bu
on c.business_user_id = bu.user_id
join users u
on bu.user_id = u.user_id
) insq
join (
select vehicle_id,
c2.company_id, brand,
model_name, r.valid_thru,
r.is_available,m.vehicle_type,
m.transmission,m.color,
l.city
from vehicles v
join companies c2 on v.company_id = c2.company_id
join models m on m.model_id = v.model_id
join registrations r on r.registration_id = v.registration_id
join locations l on l.location_id = v.location_id
) f on insq.company_id = f.company_id
order by company_name
Најизнајмуван автомобил во текот на изминатите два месеци земено во однос на тековниот датум
select
v.brand ,
v.chassis_number,
c.vehicle_id,
m.model_name,
m.color,
c3.company_name,
count(*) as br_iznajmuvanja
from
contracts c
join vehicles v on
v.vehicle_id = c.vehicle_id
join models m on
v.model_id = m.model_id
join companies c3 on
c3.company_id = v.company_id
where
(c.signed_date - interval '2 months')<= c.signed_date
and c.signed_date <= now()
group by
c.vehicle_id ,
v.brand ,
v.chassis_number ,
m.model_name ,
m.color,
c3.company_name
having
count(*) = (
select
max(br_iznajmuvanja)
from
(
select
vehicle_id,
count(*) as br_iznajmuvanja
from
contracts c2
group by
vehicle_id) contracts)
Да се најде клиент што има направено најголем приход независно од која компанија изнајмувал автомобил
select
a.user_id,
b.username,
a.prihod
from
(
select
user_id,
sum(v.daily_rental_price * (c.end_date - c.start_date)) as prihod
from
contracts c
join vehicles v on
v.vehicle_id = c.vehicle_id
group by
c.user_id ) a
join (
select
c.user_id,
u.username
from
clients as c
join users u on
u.user_id = c.user_id
) b on
a.user_id = b.user_id
where
a.prihod =
(
select
max(prihod)
from
(
select
user_id,
sum(v2.daily_rental_price * (c4.end_date - c4.start_date)) as prihod
from
contracts c4
join vehicles v2 on
v2.vehicle_id = c4.vehicle_id
group by
user_id) maximprihod
Доставувач кој што има доставено најмногу автомобили (најдобар работник)
select
a.delivery_man_id,
a.username,
a.company_name,
a.broj_dostavi
from
(
select
c.delivery_man_id,
u.username,
c2.company_name,
count(*) as broj_dostavi
from
contracts c
join delivery_man dm on
dm.user_id = c.delivery_man_id
join users u on
u.user_id = dm.user_id
join companies c2 on
c2.company_id = dm.company_id
group by
c.delivery_man_id,
u.username,
c2.company_name
) a
where
a.broj_dostavi = (
select
max(broj_dostavi)
from
(
select
c.delivery_man_id,
count(*) as broj_dostavi
from
contracts c
group by
c.delivery_man_id
) b
)
Локации подредени според тоа колку автомобили има во тој град место и која компанија го нуди
select l.city , count(l.city) as num_of_vehicles from vehicles v
join locations l on v.location_id = l.location_id
group by l.city
order by num_of_vehicles desc;
Број на автомобили кои што ги нуди една компанија во некој град
select c.company_name, count(vehicle_id) as counter from vehicles v
join locations l on l.location_id = v.location_id
join companies c on c.company_id = v.company_id
where l.city = 'Skopje'
group by c.company_id , c.company_name;
Регистрации на сите автомобили што биле изнајмени повеќе од десет дена
select v.brand, m.model_name, r.plate_num from vehicles v
join models m on v.model_id = m.model_id
join registrations r on v.registration_id = r.registration_id
join contracts c on c.vehicle_id = v.vehicle_id
where c.end_date - c.signed_date >= 10
Компании кои што имаат направено промет поголем од просечниот од сите компании заедно од издавање на автомобили
select c.company_name,
sum(v.daily_rental_price) as prihod
from vehicles v
join companies c on v.company_id = c.company_id
group by c.company_name
having sum(v.daily_rental_price) > AVG(V.daily_rental_price)
Last modified
3 years ago
Last modified on 12/23/22 12:18:08
Note:
See TracWiki
for help on using the wiki.
