Напредни извештаи од базата (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
23 months ago
Last modified on 12/23/22 12:18:08
Note:
See TracWiki
for help on using the wiki.