NTSB investigations, Outside the U.S.
565 cases where the phase of flight was Initial climb.
Cases per year
| 1964 | 17 |
|---|---|
| 1965 | 11 |
| 1966 | 11 |
| 1967 | 16 |
| 1968 | 6 |
| 1969 | 5 |
| 1970 | 11 |
| 1971 | 6 |
| 1972 | 8 |
| 1973 | 6 |
| 1974 | 8 |
| 1975 | 5 |
| 1976 | 1 |
| 1977 | 2 |
| 1978 | 2 |
| 1979 | 1 |
| 1985 | 1 |
| 1987 | 1 |
| 1990 | 1 |
| 1992 | 1 |
| 1997 | 1 |
| 2004 | 1 |
| 2006 | 1 |
| 2008 | 10 |
| 2009 | 5 |
| 2010 | 12 |
| 2011 | 8 |
| 2012 | 13 |
| 2013 | 13 |
| 2014 | 13 |
| 2015 | 22 |
| 2016 | 26 |
| 2017 | 24 |
| 2018 | 21 |
| 2019 | 39 |
| 2020 | 22 |
| 2021 | 40 |
| 2022 | 42 |
| 2023 | 39 |
| 2024 | 33 |
| 2025 | 41 |
| 2026 | 19 |
Latest cases
Query with SQL
duckdb -csv -c "WITH phase_names(main, name) AS (VALUES (100, 'Prior to flight'), (150, 'Standing'), (200, 'Pushback/towing'), (250, 'Taxi'), (300, 'Takeoff'), (350, 'Initial climb'), (400, 'Enroute'), (450, 'Maneuvering'), (500, 'Approach'), (550, 'Landing'), (600, 'Emergency descent'), (650, 'Uncontrolled descent'), (700, 'Post-impact'), (750, 'After landing'), (800, 'Other'), (990, 'Unknown')),
crosswalk(code, main, name) AS (VALUES (500, 150, 'Standing'), (501, 150, 'Standing - pre-flight'), (502, 150, 'Standing - starting engine(s)'), (503, 150, 'Standing - engine(s) operating'), (504, 150, 'Standing - engine(s) not operating'), (505, 150, 'Standing - idling rotors'), (510, 250, 'Taxi'), (511, 200, 'Taxi - pushback/tow'), (512, 250, 'Taxi - to takeoff'), (513, 250, 'Taxi - from landing'), (514, 250, 'Taxi - aerial'), (520, 300, 'Takeoff'), (521, 300, 'Takeoff - roll/run'), (522, 350, 'Takeoff - initial climb'), (523, 300, 'Takeoff - aborted'), (530, 400, 'Climb'), (531, 400, 'Climb - to cruise'), (540, 400, 'Cruise'), (541, 400, 'Cruise - normal'), (542, 400, 'Maneuvering - holding (IFR)'), (550, 400, 'Descent'), (551, 400, 'Descent - normal'), (552, 600, 'Descent - emergency'), (553, 650, 'Descent - uncontrolled'), (560, 500, 'Approach'), (561, 500, 'Approach - VFR pattern - downwind'), (562, 500, 'Approach - VFR pattern - base turn'), (563, 500, 'Approach - VFR pattern - base leg/base to final'), (564, 500, 'Approach - VFR pattern - final approach'), (565, 500, 'Go-around (VFR)'), (566, 500, 'Approach - IAF to FAF/outer marker (IFR)'), (567, 500, 'Approach - FAF/outer marker to threshold (IFR)'), (568, 500, 'Circling (IFR)'), (569, 500, 'Missed approach (IFR)'), (570, 550, 'Landing'), (571, 550, 'Landing - flare/touchdown'), (572, 550, 'Landing - roll'), (573, 550, 'Landing - aborted'), (574, 550, 'Emergency landing'), (575, 550, 'Emergency landing after takeoff'), (576, 600, 'Emergency descent/landing'), (580, 450, 'Maneuvering'), (581, 450, 'Maneuvering - aerial application'), (582, 450, 'Maneuvering - turn to reverse direction'), (583, 450, 'Maneuvering - turn to landing area (emergency)'), (590, 450, 'Hover'), (591, 450, 'Hover - in ground effect'), (592, 450, 'Hover - out of ground effect'), (600, 800, 'Other'), (610, 990, 'Unknown')),
current_codes AS (
SELECT e.case_mkey, TRY_CAST(e.\"tier1Number\" AS INTEGER) AS code,
row_number() OVER (PARTITION BY e.case_mkey ORDER BY coalesce(e.\"isDefiningEvent\", false) DESC, e.position) AS n
FROM 'https://openairdocs.org/data/latest/ntsb_events.parquet' e
WHERE e.aircrafts_position = 1 AND e.\"tier1Number\" GLOB '[1-9][0-9]*'
AND (e.\"isDefiningEvent\" OR e.case_mkey IN (SELECT \"mKey\" FROM 'https://openairdocs.org/data/latest/ntsb_case_detail.parquet' WHERE \"isPre1982\"))
),
phases AS (
SELECT case_mkey, 'current' AS scheme, code, CASE WHEN code >= 990 THEN 990 ELSE code // 50 * 50 END AS main
FROM current_codes WHERE n = 1
UNION ALL
SELECT o.case_mkey, 'older', o.\"phaseOfFlightCode\", w.main
FROM 'https://openairdocs.org/data/latest/ntsb_occurrences.parquet' o JOIN crosswalk w ON w.code = o.\"phaseOfFlightCode\"
WHERE o.aircrafts_position = 1 AND o.\"occurrenceNumber\" = 1 AND o.case_mkey NOT IN (SELECT case_mkey FROM current_codes)
),
case_phases AS (
SELECT p.*, c.\"eventDate\", c.\"highestInjuryLevel\" = 'Fatal' AS fatal, a.aircraft_model_code
FROM phases p JOIN 'https://openairdocs.org/data/latest/ntsb_case_detail.parquet' c ON c.\"mKey\" = p.case_mkey
LEFT JOIN 'https://openairdocs.org/data/latest/ntsb_aircrafts.parquet' a ON a.case_mkey = p.case_mkey AND a.position = 1
WHERE c.\"eventDate\" >= DATE '1962-01-01' AND p.main IN (SELECT main FROM phase_names)
)
SELECT c.\"ntsbNumber\", c.\"eventDate\", c.\"eventType\", c.\"eventCity\", c.\"eventStateOrRegion\", a.n_number, a.\"aircraftMake\", a.\"aircraftModel\", c.\"highestInjuryLevel\", c.\"totalFatal\", c.\"completionStatus\", c.report_url
FROM 'https://openairdocs.org/data/latest/ntsb_case_detail.parquet' c LEFT JOIN 'https://openairdocs.org/data/latest/ntsb_aircrafts.parquet' a ON a.case_mkey = c.\"mKey\" AND a.position = 1
WHERE c.\"eventCountry\" <> 'USA'
AND c.\"mKey\" IN (SELECT case_mkey FROM case_phases WHERE main = 350)
ORDER BY c.\"eventDate\" DESC, c.\"ntsbNumber\" DESC"Prints the whole list as CSV. It reads the release’s Parquet files over HTTPS, so there’s nothing to download first. Install DuckDB to run it.
WITH phase_names(main, name) AS (VALUES (100, 'Prior to flight'), (150, 'Standing'), (200, 'Pushback/towing'), (250, 'Taxi'), (300, 'Takeoff'), (350, 'Initial climb'), (400, 'Enroute'), (450, 'Maneuvering'), (500, 'Approach'), (550, 'Landing'), (600, 'Emergency descent'), (650, 'Uncontrolled descent'), (700, 'Post-impact'), (750, 'After landing'), (800, 'Other'), (990, 'Unknown')),
crosswalk(code, main, name) AS (VALUES (500, 150, 'Standing'), (501, 150, 'Standing - pre-flight'), (502, 150, 'Standing - starting engine(s)'), (503, 150, 'Standing - engine(s) operating'), (504, 150, 'Standing - engine(s) not operating'), (505, 150, 'Standing - idling rotors'), (510, 250, 'Taxi'), (511, 200, 'Taxi - pushback/tow'), (512, 250, 'Taxi - to takeoff'), (513, 250, 'Taxi - from landing'), (514, 250, 'Taxi - aerial'), (520, 300, 'Takeoff'), (521, 300, 'Takeoff - roll/run'), (522, 350, 'Takeoff - initial climb'), (523, 300, 'Takeoff - aborted'), (530, 400, 'Climb'), (531, 400, 'Climb - to cruise'), (540, 400, 'Cruise'), (541, 400, 'Cruise - normal'), (542, 400, 'Maneuvering - holding (IFR)'), (550, 400, 'Descent'), (551, 400, 'Descent - normal'), (552, 600, 'Descent - emergency'), (553, 650, 'Descent - uncontrolled'), (560, 500, 'Approach'), (561, 500, 'Approach - VFR pattern - downwind'), (562, 500, 'Approach - VFR pattern - base turn'), (563, 500, 'Approach - VFR pattern - base leg/base to final'), (564, 500, 'Approach - VFR pattern - final approach'), (565, 500, 'Go-around (VFR)'), (566, 500, 'Approach - IAF to FAF/outer marker (IFR)'), (567, 500, 'Approach - FAF/outer marker to threshold (IFR)'), (568, 500, 'Circling (IFR)'), (569, 500, 'Missed approach (IFR)'), (570, 550, 'Landing'), (571, 550, 'Landing - flare/touchdown'), (572, 550, 'Landing - roll'), (573, 550, 'Landing - aborted'), (574, 550, 'Emergency landing'), (575, 550, 'Emergency landing after takeoff'), (576, 600, 'Emergency descent/landing'), (580, 450, 'Maneuvering'), (581, 450, 'Maneuvering - aerial application'), (582, 450, 'Maneuvering - turn to reverse direction'), (583, 450, 'Maneuvering - turn to landing area (emergency)'), (590, 450, 'Hover'), (591, 450, 'Hover - in ground effect'), (592, 450, 'Hover - out of ground effect'), (600, 800, 'Other'), (610, 990, 'Unknown')),
current_codes AS (
SELECT e.case_mkey, TRY_CAST(e."tier1Number" AS INTEGER) AS code,
row_number() OVER (PARTITION BY e.case_mkey ORDER BY coalesce(e."isDefiningEvent", false) DESC, e.position) AS n
FROM 'https://openairdocs.org/data/latest/ntsb_events.parquet' e
WHERE e.aircrafts_position = 1 AND e."tier1Number" GLOB '[1-9][0-9]*'
AND (e."isDefiningEvent" OR e.case_mkey IN (SELECT "mKey" FROM 'https://openairdocs.org/data/latest/ntsb_case_detail.parquet' WHERE "isPre1982"))
),
phases AS (
SELECT case_mkey, 'current' AS scheme, code, CASE WHEN code >= 990 THEN 990 ELSE code // 50 * 50 END AS main
FROM current_codes WHERE n = 1
UNION ALL
SELECT o.case_mkey, 'older', o."phaseOfFlightCode", w.main
FROM 'https://openairdocs.org/data/latest/ntsb_occurrences.parquet' o JOIN crosswalk w ON w.code = o."phaseOfFlightCode"
WHERE o.aircrafts_position = 1 AND o."occurrenceNumber" = 1 AND o.case_mkey NOT IN (SELECT case_mkey FROM current_codes)
),
case_phases AS (
SELECT p.*, c."eventDate", c."highestInjuryLevel" = 'Fatal' AS fatal, a.aircraft_model_code
FROM phases p JOIN 'https://openairdocs.org/data/latest/ntsb_case_detail.parquet' c ON c."mKey" = p.case_mkey
LEFT JOIN 'https://openairdocs.org/data/latest/ntsb_aircrafts.parquet' a ON a.case_mkey = p.case_mkey AND a.position = 1
WHERE c."eventDate" >= DATE '1962-01-01' AND p.main IN (SELECT main FROM phase_names)
)
SELECT c."ntsbNumber", c."eventDate", c."eventType", c."eventCity", c."eventStateOrRegion", a.n_number, a."aircraftMake", a."aircraftModel", c."highestInjuryLevel", c."totalFatal", c."completionStatus", c.report_url
FROM 'https://openairdocs.org/data/latest/ntsb_case_detail.parquet' c LEFT JOIN 'https://openairdocs.org/data/latest/ntsb_aircrafts.parquet' a ON a.case_mkey = c."mKey" AND a.position = 1
WHERE c."eventCountry" <> 'USA'
AND c."mKey" IN (SELECT case_mkey FROM case_phases WHERE main = 350)
ORDER BY c."eventDate" DESC, c."ntsbNumber" DESCRun it at the DuckDB prompt, or in any tool that reads Parquet over HTTPS. More ways to query the release are on Use the data.
NTSB GAA27WA005Accident · No injuriesClass 5 · ForeignCessna R172 · Tarija, BoliviaNTSB DCA26WA364Incident · No injuriesClass 5 · ForeignBoeing 777-223 · Ezeiza, ArgentinaNTSB ENG26WA039OccurrenceClass 5 · ForeignBoeing 737 · Cancun, MexicoNTSB DCA26WA222OccurrenceClass 5 · ForeignBoeing 737 · Marrakech, MoroccoNTSB DCA26WA199Incident · No injuriesClass 5 · ForeignBoeing 747 · Karachi, PakistanNTSB DCA26WA207Occurrence · No injuriesClass 5 · ForeignBoeing 737 · Lahore, PakistanNTSB GAA26WA167Accident · No injuriesClass 5 · ForeignSocata TB9 · Zborowo, PolandNTSB ENG26WA027Occurrence · No injuriesClass 5 · ForeignATR ATR72 · Marseille-Provence, FranceNTSB GAA26WA184Accident · Serious injuriesClass 5 · ForeignRobinson R44 · Yorke Island, AustraliaNTSB DCA26WA172Incident · No injuriesClass 5 · ForeignMcdonnell Douglas MD80 · La Guaira, VenezuelaNTSB ENG26WA025Incident · No injuriesClass 3 · ForeignAirbus A330-323 · Sao Paulo, BrazilNTSB GAA26WA134Incident · 1 fatalClass 5 · ForeignAir Tractor AT502B · Cruz Alta, BrazilNTSB DCA26WA157Incident · No injuriesClass 5 · ForeignEmbraer ERJ190 · Minatitlan, MexicoNTSB DCA26WA147Incident · No injuriesClass 5 · ForeignBoeing 737-823 · San Salvador, El SalvadorNTSB GAA26WA116AccidentClass 5 · ForeignBeech C90 · Gangnani, IndiaNTSB DCA26WA114Incident · No injuriesClass 5 · ForeignSaab 340B · Canberra, AustraliaNTSB GAA26WA077Accident · Serious injuriesClass 5 · ForeignCessna T-206H · Saltillo, Coahuila, MexicoNTSB GAA26WA072Accident · 6 fatalClass 3 · ForeignPiper PA-31-325 · Paipa, ColombiaNTSB GAA26WA065Accident · Serious injuriesClass 5 · ForeignNavion 145 · San Antonio Oeste, ArgentinaNTSB ENG26WA012Occurrence · No injuriesClass 5 · ForeignAirbus A320 · Querétaro, MexicoNTSB DCA26WA089Accident · Serious injuriesClass 5 · ForeignBoeing 737-800 · (Birmingham, United KingdomNTSB DCA26WA071Incident · No injuriesClass 5 · ForeignBoeing 727 · Soledad, ColombiaNTSB GAA26WA063Accident · 1 fatalClass 5 · ForeignRobin DR400 · Le Havre, FranceNTSB DCA26WA069OccurrenceClass 5 · ForeignSaab 340 · Garbutt, AustraliaNTSB GAA26WA024Accident · No injuriesClass 5 · ForeignPiper PA-31 T · Pudahuel, ChileNTSB GAA26WA012Accident · 2 fatalClass 4 · ForeignPiper PA31T · San Cristóba, VenezuelaNTSB GAA26WA018Accident · No injuriesClass 5 · ForeignRobinson R22 · Colombo, BrazilNTSB GAA26WA008Accident · 1 fatalClass 5 · ForeignPiper PA28 · Pilanesberg, South AfricaNTSB GAA26WA006Accident · 3 fatalClass 5 · ForeignPiper PA32 · Shell Harbor, AustraliaNTSB GAA25WA264Accident · 2 fatalClass 5 · ForeignCessna 150M · Municipio de Garcia, MexicoNTSB DCA25WA343Incident · No injuriesClass 5 · ForeignAirbus A320 · Catania, ItalyNTSB DCA25WA342Incident · No injuriesClass 5 · ForeignBoeing 737 · Madrid, SpainNTSB DCA25WA331Incident · No injuriesClass 5 · ForeignBoeing 737 · Barquisimeto, VenezuelaNTSB GAA25WA249Accident · Serious injuriesClass 5 · ForeignBell 206 · Cali, ColombiaNTSB GAA25WA248Accident · 1 fatalClass 5 · ForeignQuicksilver MX II · Phuket, ThailandNTSB GAA25WA240Accident · Serious injuriesClass 5 · ForeignCessna TR182 · Vereda la Patera, Ubate, ColombiaNTSB GAA25WA220AccidentClass 5 · ForeignCessna 210L · Turks and Caicos Islands, United KingdomNTSB DCA25WA277Incident · No injuriesClass 5 · ForeignBoeing 737 · Mexico City, MexicoNTSB GAA25WA219Accident · 2 fatalClass 5 · ForeignPiper PA31 · Deer Lake, CanadaNTSB DCA25WA262IncidentClass 5 · ForeignAirbus A320-232 · Nassau, BahamasNTSB DCA25WA254Incident · No injuriesClass 5 · ForeignDouglas DC9 · El Vigía, VenezuelaNTSB GAA25WA210Accident · 1 fatalClass 5 · ForeignJodel DR1050 · Châteauroux-Villers, FranceNTSB GAA25WA196AccidentClass 5 · ForeignCirrus Design SR22 · Remomeix, FranceNTSB GAA25WA195AccidentClass 5 · ForeignCessna 172 · Chartres, FranceNTSB ENG25WA040IncidentClass 5 · ForeignBoeing 777 · Karachi, PakistanNTSB GAA25WA193AccidentClass 5 · ForeignMesserschmitt-Bölkow-Blohm BK117 · Havre St-Pierre, CanadaNTSB DCA25WA237Incident · No injuriesClass 5 · ForeignBoeing 737 · Dubai, United Arab EmiratesNTSB DCA25LA233Incident · No injuriesClass 4 · LimitedInvestigation openBoeing 747-47UF · Guayaquil, EcuadorNTSB ENG25WA037Incident · No injuriesClass 5 · ForeignBoeing 737 · Muscat, OmanNTSB DCA25WA217IncidentClass 5 · ForeignBoeing 777 · Schiphol, Netherlands