- •4. Отношение "Рейсы" (поля "Номер маршрута", "Дата выезда", "Водитель", "Количество проданных билетов").
- •Представление "Расписание" (отношение "Маршруты" с указанием времени прибытия).
- •Представление "Средняя загруженность маршрутов": номер маршрута – количество рейсов – количество проданных билетов / количество мест всего.
- •Представление "Рейсы, на которые все билеты проданы".
Представление "Расписание" (отношение "Маршруты" с указанием времени прибытия).
create or replace view timetable
as select *, r_departure_time + r_travel_time r_avarial_time
from routes;
select *
from timetable;
Результат:
47 |
Москва |
Наро-фоминск |
8:30:00 |
1:42:00 |
еж. |
89.00 |
10:12:00 |
57 |
Наро-фоминск |
Москва |
18:20:00 |
1:45:00 |
еж. |
89.00 |
20:05:00 |
12 |
Москва |
Апрелевка |
9:20:00 |
0:45:00 |
вт. |
50.00 |
10:05:00 |
22 |
Апрелевка |
Москва |
11:00:00 |
0:45:00 |
чт. |
50.00 |
11:45:00 |
26 |
Москва |
Бекасово |
18:20:00 |
1:20:00 |
еж. |
76.00 |
19:40:00 |
36 |
Бекасово |
Москва |
9:30:00 |
1:20:00 |
вт. |
76.00 |
10:50:00 |
100 |
Алабино |
Москва |
15:30:00 |
1:00:00 |
пт. |
100.00 |
16:30:00 |
Представление "Средняя загруженность маршрутов": номер маршрута – количество рейсов – количество проданных билетов / количество мест всего.
create or replace view avg_charge_routes
as select t_route, count(t_route), sum(t_sold_tickets)/
(select sum(t_seats)
from trips t1, drivers, transport
where (t_driver = d_id)
and (d_transport = t_number)
and (t1.t_route = t2.t_route)) charge
from trips t2
group by t_route;
select *
from avg_charge_routes;
Результат:
t_route |
count |
charge |
47 |
7 |
0.57009345794392523364 |
12 |
1 |
0.94285714285714285714 |
36 |
1 |
0.80898876404494382022 |
22 |
1 |
0.67000000000000000000 |
26 |
7 |
0.84795321637426900585 |
57 |
7 |
0.65086206896551724138 |
Представление "Рейсы, на которые все билеты проданы".
create or replace view full_solded_trips
as select trips.*
from trips, drivers, transport
where (t_driver = d_id)
and (d_transport = t_number)
and (t_sold_tickets >= t_seats);
select *
from full_solded_trips;
Результат:
t_id |
t_route |
t_date |
t_driver |
t_sold_tickets |
1 |
47 |
2011-08-01 |
1 |
47 |
3 |
47 |
2011-08-02 |
13 |
39 |
22 |
26 |
2011-08-06 |
10 |
140 |
23 |
26 |
2011-08-07 |
11 |
100 |