-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy path16.sql
More file actions
67 lines (66 loc) · 2.28 KB
/
16.sql
File metadata and controls
67 lines (66 loc) · 2.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
-- Query 16: Aircraft utilization and efficiency analysis
-- Analyzes aircraft tail numbers by utilization metrics, flight frequency, and operational efficiency
-- demonstrating fact table analysis with advanced aggregations and performance metrics
WITH aircraft_utilization AS (
SELECT
f.tail_num,
a.airline,
COUNT(*) AS total_flights,
COUNT(DISTINCT f.fl_date) AS active_days,
ROUND(COUNT(*) / COUNT(DISTINCT f.fl_date), 2) AS avg_flights_per_day,
SUM(f.distance) AS total_distance_miles,
ROUND(AVG(f.distance), 2) AS avg_flight_distance,
SUM(f.air_time) AS total_air_time_minutes,
ROUND(AVG(f.air_time), 2) AS avg_air_time,
SUM(CASE WHEN f.cancelled > 0 THEN 1 ELSE 0 END) AS cancelled_flights,
SUM(CASE WHEN f.diverted > 0 THEN 1 ELSE 0 END) AS diverted_flights,
ROUND(AVG(f.dep_delay), 2) AS avg_departure_delay,
ROUND(AVG(f.arr_delay), 2) AS avg_arrival_delay
FROM
flights f
JOIN
airlines a ON f.carrier = a.iata_code
WHERE
f.year = 2020
AND f.tail_num IS NOT NULL
AND f.tail_num != ''
AND f.air_time IS NOT NULL
AND f.distance IS NOT NULL
GROUP BY
f.tail_num, a.airline
HAVING
COUNT(*) >= 100
),
efficiency_metrics AS (
SELECT
au.*,
ROUND(au.cancelled_flights * 100.0 / au.total_flights, 2) AS cancellation_rate_pct,
ROUND(au.diverted_flights * 100.0 / au.total_flights, 2) AS diversion_rate_pct,
ROUND(au.total_air_time_minutes / 60.0, 2) AS total_air_time_hours,
ROUND(au.total_distance_miles / NULLIF(au.total_air_time_minutes, 0) * 60, 2) AS avg_speed_mph,
RANK() OVER (PARTITION BY au.airline ORDER BY au.total_flights DESC) AS utilization_rank_in_airline
FROM
aircraft_utilization au
)
SELECT
airline,
tail_num,
total_flights,
active_days,
avg_flights_per_day,
total_distance_miles,
avg_flight_distance,
total_air_time_hours,
avg_air_time,
avg_speed_mph,
avg_departure_delay,
avg_arrival_delay,
cancellation_rate_pct,
diversion_rate_pct,
utilization_rank_in_airline
FROM
efficiency_metrics
WHERE
utilization_rank_in_airline <= 5
ORDER BY
airline, utilization_rank_in_airline;