1
+ -- use flightsDB
2
+ -- go
3
+
4
+ -- 1. Delay general report by airline
5
+
6
+ -- SQL SERVER (SQL)
7
+ SELECT f .flight_ID as [Fligth ID], f .date as [Date ], f .Flight_number as [Flight Number ],
8
+ f .origin_airport as [Origin Airport], f .Departure_delay as [Departure delay], f .destination_airport as [Destination Airport], f .Arrival_delay as [Arrival delay],
9
+ f .delay , ROUND(((f .Departure_delay )+ (f .Arrival_delay ))/ 2 ,0 ) as [Average delay], al .Airline
10
+ FROM airport a
11
+ INNER JOIN flights f
12
+ ON a .airport_code = f .destination_airport
13
+ INNER JOIN airlines al
14
+ ON al .airline_code = f .airline_code
15
+ WHERE al .Airline_code = ' AA'
16
+ ORDER BY [Average delay] DESC ;
17
+
18
+ -- NEO4J (CQL)
19
+ /*
20
+ MATCH (a:Airport)<-[:LANDS_AT]-(f:Flight)-[:OPERATED_BY]->(al:Airlines)
21
+ WHERE al.id = 'AA'
22
+ RETURN f.id as `Fligth ID`, f.date as `Date`, f.flight_number as `Flight Number`,
23
+ f.origin_airport as `Origin Airport`, f.departure_delay as `Departure delay`,
24
+ f.destination_airport as `Destination Airport`, f.arrival_delay as `Arrival delay`,
25
+ f.delay, toInteger((f.departure_delay + f.arrival_delay) / 2) as `Average delay`,
26
+ al.airline as `Airline`
27
+ ORDER BY `Average delay` DESC
28
+ */
29
+
30
+
31
+ -- 2. Number of flights by airport
32
+
33
+ -- SQL SERVER (SQL)
34
+ SELECT f .origin_airport as Airport, a .airport , COUNT (f .origin_airport ) AS num_flights
35
+ FROM flights f
36
+ INNER JOIN airport a
37
+ ON f .origin_airport = a .airport_code
38
+ GROUP BY f .origin_airport , a .airport
39
+ ORDER BY num_flights DESC ;
40
+
41
+ -- NEO4J (CQL)
42
+ /*
43
+ MATCH (f:Flight)-[:TAKES_OFF_FROM]->(a:Airport)
44
+ RETURN f.origin_airport as Airport, a.airport as airport, count(f.origin_airport) as num_flights
45
+ ORDER BY num_flights DESC
46
+ */
47
+
48
+
49
+ -- 3. What airlines are using the flight number 1495 and where?
50
+
51
+ -- SQL SERVER (SQL)
52
+ SELECT DISTINCT flights .date , airlines .airline
53
+ FROM flights
54
+ JOIN airlines
55
+ ON flights .airline_code = airlines .airline_code
56
+ WHERE flights .flight_number = ' 1495' ;
57
+
58
+ -- NEO4J (CQL)
59
+
60
+ /*
61
+ MATCH (f:Flight)-[:OPERATED_BY]->(a:Airlines)
62
+ WHERE f.flight_number = 1495
63
+ RETURN DISTINCT f.date as date, a.id as airline
64
+ */
65
+
66
+
67
+ -- 4.TOP 5 ailines with more delayed flights
68
+
69
+ -- SQL SERVER (SQL)
70
+ SELECT TOP 5 COUNT (* ) AS num_delays, al .airline_code , al .airline
71
+ FROM flights
72
+ inner join airlines al
73
+ ON flights .airline_code = al .airline_code
74
+ WHERE flights .delay_minutes > 0
75
+ GROUP BY al .airline_code , al .airline
76
+ ORDER BY num_delays DESC ;
77
+
78
+ -- NEO4J (CQL)
79
+
80
+ /*
81
+ MATCH (f:Flight)-[:OPERATED_BY]->(a:Airlines)
82
+ WHERE f.delay_minutes > 0
83
+ WITH COUNT(*) AS num_delays, a.id AS airline_code, a.airline AS airline
84
+ ORDER BY num_delays DESC
85
+ RETURN airline_code, airline, num_delays
86
+ LIMIT 5
87
+ */
88
+
89
+
90
+ -- 5. Which airline has the highest average delay time for flights departing from New York's JFK airport?
91
+
92
+ -- SQL SERVER (SQL)
93
+ SELECT TOP 5 al .airline , AVG (f .departure_delay ) AS avg_delay
94
+ FROM airlines al
95
+ INNER JOIN flights f
96
+ ON al .airline_code = f .airline_code
97
+ WHERE f .origin_airport = ' JFK' AND f .departure_delay IS NOT NULL
98
+ GROUP BY airline
99
+ ORDER BY avg_delay DESC
100
+
101
+ -- NEO4J (CQL)
102
+
103
+ /*
104
+ MATCH (a:Airlines)<-[:OPERATED_BY]-(f:Flight {origin_airport: 'JFK'})
105
+ WHERE f.departure_delay IS NOT NULL
106
+ WITH a.airline AS airline, AVG(f.departure_delay) AS avg_delay
107
+ ORDER BY avg_delay DESC
108
+ RETURN airline, avg_delay
109
+ LIMIT 5
110
+ */
111
+
112
+ -- 6. Average distance trip by airline
113
+
114
+ -- SQL SERVER (SQL)
115
+ SELECT f .airline_code , a .airline , avg (f .distance ) as Average_distance
116
+ FROM flights f
117
+ INNER JOIN airlines a
118
+ ON a .airline_code = f .airline_code
119
+ GROUP BY f .airline_code , a .airline
120
+ ORDER BY Average_distance DESC
121
+
122
+ -- NEO4J (CQL)
123
+
124
+ /*
125
+ MATCH (a:Airlines)<-[:OPERATED_BY]-(f:Flight)
126
+ WITH a.id AS airline_code, a.airline AS airline, AVG(f.distance) AS average_distance
127
+ ORDER BY average_distance DESC
128
+ RETURN airline_code, airline, average_distance
129
+ */
130
+
131
+ -- 7. Cancellation percentage per airline
132
+
133
+ -- SQL SERVER (SQL)
134
+ SELECT f .airline_code , a .airline ,
135
+ (COUNT (CASE WHEN f .delay_id != ' N' THEN 1 END)) as Delayed,
136
+ COUNT (* ) as Total_flights,
137
+ ROUND(CAST(COUNT (CASE WHEN f .delay_id != ' N' THEN 1 END) AS FLOAT) / COUNT (* ),2 ) * 100 as [Delay percentage (%)]
138
+ FROM flights f
139
+ INNER JOIN airlines a
140
+ ON a .airline_code = f .airline_code
141
+ GROUP BY f .airline_code , a .airline
142
+ ORDER BY [Delay percentage (%)] DESC
143
+
144
+ /*
145
+ MATCH (f:Flight)-[:OPERATED_BY]->(a:Airlines)
146
+ WITH a.id AS airline_code, a.airline AS airline,
147
+ COUNT(CASE WHEN f.delay_id <> 'N' THEN 1 END) AS delayed,
148
+ COUNT(*) AS total_flights
149
+ RETURN airline_code, airline, delayed, total_flights, (toFloat(delayed) / total_flights) * 100 AS `Delay percentage (%)`
150
+ ORDER BY (`Delay percentage (%)`) desc
151
+ LIMIT 5
152
+ */
0 commit comments