Задавайте вопросы, мы ответим
Вы не зашли.
ВОТ ЗАДАНИЕ.
Схема БД состоит из четырех отношений:
Company (ID_comp, name)
Trip(trip_no, ID_comp, plane, town_from, town_to, time_out, time_in)
Passenger(ID_psg, name)
Pass_in_trip(trip_no, date, ID_psg, place)
Таблица Company содержит идентификатор и название компании, осуществляющей перевозку пассажиров. Таблица Trip содержит информацию о рейсах: номер рейса, идентификатор компании, тип самолета, город отправления, город прибытия, время отправления и время прибытия. Таблица Passenger содержит идентификатор и имя пассажира. Таблица Pass_in_trip содержит информацию о полетах: номер рейса, дата вылета (день), идентификатор пассажира и место, на котором он сидел во время полета.
Задание:
Для каждой компании подсчитать количество перевезенных пассажиров
(если они были в этом месяце) по декадам апреля 2010. При этом учитывать только дату вылета.
Вывод: название компании, количество пассажиров за каждую декаду (4
столбца).
Неактивен
Я всегда думал, что декада — это десятилетие
SELECT c.name, SUM(IF(pit.date BETWEEN '2010-04-01' AND '2010-04-10', 1, 0)), …
FROM Company c
JOIN Trip t USING (ID_comp)
JOIN Pass_in_trip pit USING (trip_no);
Неактивен
а что-то вроде этого совсем не то да?
SELECT Company.ID-comp, Count(Pass_in_trip.ID_psg) as A,
Count(Pass_in_trip.ID_psg) as B,
Count(Pass_in_trip.ID_psg) as C
FROM Company, Trip, Pass_in_trip
LEFT JOIN trip on A.trip_no = trip.trip_no WHERE (((Company.[ID-comp])=Trip.[ID-comp]) And ((Trip.Trip_no)=Pass_in_trip.Trip_no) And ((Pass_in_trip.Date) Between #1/4/2010# And #10/4/2010#))
LEFT JOIN trip on B.trip_no = trip.trip_no WHERE (((Company.[ID-comp])=Trip.[ID-comp]) And ((Trip.Trip_no)=Pass_in_trip.Trip_no) And ((Pass_in_trip.Date) Between #11/4/2010# And #20/4/2010#))
LEFT JOIN trip on C.trip_no = trip.trip_no WHERE (((Company.[ID-comp])=Trip.[ID-comp]) And ((Trip.Trip_no)=Pass_in_trip.Trip_no) And ((Pass_in_trip.Date) Between #21/4/2010# And #30/4/2010#))
GROUP BY Company.ID-comp;
Неактивен