This repository contains airline booking datasets (Flights, Bookings, and Passengers) that have been cleaned, transformed, and joined for exploratory data analysis and dashboard visualization.
- MySQL - Data Cleaning
- Tableau - Data Visualisation
- Duplicate Removal
- Handling Missing Values
- Standardizing Data Types
- Categorical Data Cleaning
- Blank & Null Handling
- Joined Final Dataset
- Total number of bookings across all flights?
- Sum of all booking prices?
- Unique passenger count?
- Total Revenue ÷ Total Bookings?
- Breakdown by age, gender, nationality?
SELECT
b.booking_id,
b.booking_date,
b.seat_class,
b.price,
p.passenger_id,
p.name AS passenger_name,
p.gender,
p.age,
p.nationality,
f.flight_id,
f.airline,
f.flight_number,
f.origin_airport,
f.destination_airport,
f.departure_time,
f.arrival_time,
f.status
FROM bookings2 b
JOIN passengers2 p ON b.passenger_id = p.passenger_id
JOIN flights2 f ON b.flight_id = f.flight_id;- Majority of passengers are between 25–40 years old, showing higher travel activity among working-age adults.
- A small number of airlines account for the majority of bookings (market share concentration).
- Focus marketing campaigns on the 25–40 age group, as they represent the largest passenger base.
- Increase dynamic pricing strategies during high-demand months to maximize revenue.
- Use demographic insights (age, nationality) to tailor in-flight services and amenities.
- Monitor on-time performance closely (if delay data available) and prioritize punctuality to increase customer satisfaction.
- Some rows contained NULL or blank values (e.g., missing passenger age, flight times), which were replaced with placeholders or estimates. This may affect accuracy.
- Even after cleaning duplicates and blanks, there may still be hidden inconsistencies (e.g., name spelling variations, nationality codes).