DBMS Assignment 4
DBMS Assignment 4
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
My code
SELECT
a.airport_name,
COUNT(f.flight_id) AS flights_arriving
FROM
airport a
INNER JOIN
flights f ON a.airport_id = f.arrival_airport_id
GROUP BY
a.airport_name;
SELECT
EXTRACT(MONTH FROM b.created_at) AS booking_month,
SUM(b.price) AS total_monthly_sales
FROM
booking AS b
GROUP BY
booking_month
ORDER BY
booking_month ASC;
SELECT
p.first_name,
p.last_name,
COUNT(sc.security_check_id) AS security_check_count
FROM
passengers p
INNER JOIN
security_check sc ON p.passenger_id = sc.passenger_id
GROUP BY
p.passenger_id
HAVING
COUNT(sc.security_check_id) > 2;
SELECT
ap.city,
COUNT(f.flight_id) AS number_of_flights
FROM
flights f
JOIN
airport ap ON f.departure_airport_id = ap.airport_id
WHERE
ap.country <> 'China'
GROUP BY
ap.city
ORDER BY
ap.city ASC;
SELECT
COUNT(DISTINCT p.passenger_id) AS number_of_passengers
FROM
passengers p
JOIN
booking b ON p.passenger_id = b.passenger_id
JOIN
booking_flight bf ON b.booking_id = bf.booking_id
JOIN
flights f ON bf.flight_id = f.flight_id
JOIN
airport a ON f.departure_airport_id = a.airport_id
WHERE
a.country = 'Poland';
SELECT
p.first_name,
p.last_name,
b.weight_in_kg,
sc.check_result
FROM
baggage b
JOIN
booking bk ON b.booking_id = bk.booking_id
JOIN
passengers p ON bk.passenger_id = p.passenger_id
JOIN
security_check sc ON p.passenger_id = sc.passenger_id
AND bk.booking_id = bk.booking_id
WHERE
b.weight_in_kg > 20.00
AND sc.check_result = 'Checked';
SELECT
al.airline_name,
AVG(bk.price) AS average_ticket_price
FROM
airline al
JOIN
flights f ON al.airline_id = f.airline_id
JOIN
booking_flight bf ON f.flight_id = bf.flight_id
JOIN
booking bk ON bf.booking_id = bk.booking_id
GROUP BY
al.airline_name;
SELECT
p.first_name ||''|| p.last_name AS full_name,
COUNT(bp.boarding_pass_id) AS boarding_pass_count
FROM
passengers p
JOIN
booking bk ON p.passenger_id = bk.passenger_id
JOIN
boarding_pass bp ON bk.booking_id = bp.booking_id
GROUP BY
p.passenger_id;
SELECT
f.flight_no,
SUM(CASE WHEN bc.check_result = 'Checked' THEN b.weight_in_kg ELSE 0 END) AS
checked_baggage_weight,
SUM(b.weight_in_kg) AS total_baggage_weight,
(COUNT(CASE WHEN bc.check_result = 'Checked' THEN 1 END) * 100.0 /
COUNT(b.baggage_id))
AS percentage_passed_checks
FROM
flights f
JOIN
booking_flight bf ON f.flight_id = bf.flight_id
JOIN
baggage b ON bf.booking_id = b.booking_id
LEFT JOIN
baggage_check bc ON b.booking_id = bc.booking_id
GROUP BY
f.flight_no;
SELECT
ap.airport_name,
COUNT(DISTINCT bk.booking_id) AS booking_count
FROM
airport ap
JOIN
flights f ON ap.airport_id = f.departure_airport_id OR ap.airport_id = f.arrival_airport_id
JOIN
booking_flight bf ON f.flight_id = bf.flight_id
JOIN
booking bk ON bf.booking_id = bk.booking_id
GROUP BY
ap.airport_id
ORDER BY
booking_count DESC
LIMIT 5;
SELECT
f.flight_no,
AVG(b.weight_in_kg) AS average_checked_baggage_weight
FROM
flights f
JOIN
booking_flight bf ON f.flight_id = bf.flight_id
JOIN
booking bk ON bf.booking_id = bk.booking_id
JOIN
baggage b ON bk.booking_id = b.booking_id
JOIN
baggage_check bc ON b.booking_id = bc.booking_id
WHERE
bc.check_result = 'Checked'
GROUP BY
f.flight_no;