Fatal NTSB investigations, Outside the U.S.
184 cases where the phase of flight was Initial climb.
Cases per year
| 1964 | 6 |
|---|---|
| 1965 | 5 |
| 1966 | 2 |
| 1967 | 3 |
| 1968 | 3 |
| 1969 | 1 |
| 1970 | 1 |
| 1971 | 2 |
| 1972 | 2 |
| 1973 | 2 |
| 1975 | 2 |
| 1976 | 1 |
| 1977 | 1 |
| 1987 | 1 |
| 1990 | 1 |
| 1992 | 1 |
| 2008 | 6 |
| 2009 | 2 |
| 2010 | 6 |
| 2011 | 5 |
| 2012 | 9 |
| 2013 | 9 |
| 2014 | 8 |
| 2015 | 8 |
| 2016 | 10 |
| 2017 | 9 |
| 2018 | 10 |
| 2019 | 15 |
| 2020 | 7 |
| 2021 | 6 |
| 2022 | 6 |
| 2023 | 11 |
| 2024 | 12 |
| 2025 | 9 |
| 2026 | 2 |
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.\"highestInjuryLevel\" = 'Fatal'
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."highestInjuryLevel" = 'Fatal'
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 GAA26WA134Incident · 1 fatalClass 5 · ForeignAir Tractor AT502B · Cruz Alta, BrazilNTSB GAA26WA072Accident · 6 fatalClass 3 · ForeignPiper PA-31-325 · Paipa, ColombiaNTSB GAA26WA063Accident · 1 fatalClass 5 · ForeignRobin DR400 · Le Havre, FranceNTSB GAA26WA012Accident · 2 fatalClass 4 · ForeignPiper PA31T · San Cristóba, VenezuelaNTSB 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 GAA25WA248Accident · 1 fatalClass 5 · ForeignQuicksilver MX II · Phuket, ThailandNTSB GAA25WA219Accident · 2 fatalClass 5 · ForeignPiper PA31 · Deer Lake, CanadaNTSB GAA25WA210Accident · 1 fatalClass 5 · ForeignJodel DR1050 · Châteauroux-Villers, FranceNTSB GAA25WA073Accident · 3 fatalClass 3 · ForeignCessna 550 · Baruta, VenezuelaNTSB GAA25WA049Accident · 1 fatalClass 5 · ForeignRockwell International 112TCA · Fife, United KingdomNTSB GAA24WA252Accident · 1 fatalClass 5 · ForeignCessna 337 · Deer Lake, CanadaNTSB DCA24WA244Accident · 19 fatalClass 3 · ForeignBombardier CL600 2B19 · Kathmandu, NepalNTSB GAA24WA258Accident · 3 fatalClass 5 · ForeignCessna 421C · Tofino, CanadaNTSB GAA24WA221Accident · 1 fatalClass 5 · ForeignDe Havilland DHC2 · Red Lake, CanadaNTSB GAA24WA175Accident · 1 fatalClass 5 · ForeignCessna 182 · Kerestinec, CroatiaNTSB GAA24WA176Accident · 1 fatalClass 5 · ForeignZenair Unknown · Caceres, SpainNTSB GAA24WA162Accident · 3 fatalClass 5 · ForeignCessna 406 · Windhoek City, NamibiaNTSB GAA24WA128Accident · 1 fatalClass 5 · ForeignCirrus SR22 · Cambridgeshire, United KingdomNTSB GAA24WA121Accident · 1 fatalClass 5 · ForeignRans S12 · Tabacundo, EcuadorNTSB GAA24WA065Accident · 1 fatalClass 3 · ForeignCessna 421 · Valledupar, ColombiaNTSB GAA24WA066Accident · 4 fatalClass 3 · ForeignBellanca 17-30A · Bequia, St. Vincent & GrenadinesNTSB GAA24WA039Accident · 1 fatalClass 5 · ForeignCessna 402B · Panama City, PanamaNTSB GAA24WA034Accident · 3 fatalClass 5 · ForeignCessna 421C · Sunshine Coast, AustraliaNTSB GAA24WA032Accident · 2 fatalClass 5 · ForeignCessna 150 · Ponte de Sor, PortugalNTSB GAA24WA022Accident · 12 fatalClass 5 · ForeignCessna 208 · Rio Branco, BrazilNTSB GAA24WA124Accident · 4 fatalClass 5 · ForeignRobin DR400-180 · Propriano, FranceNTSB GAA23WA271Accident · 1 fatalClass 5 · ForeignRobinson R44 · Garmen village, BulgariaNTSB GAA23WA250Accident · 2 fatalClass 5 · ForeignBell 212 · Um Al Quwain, United Arab EmiratesNTSB GAA23WA223Accident · 3 fatalClass 5 · ForeignCessna 650 · Veracruz, MexicoNTSB GAA23WA182Accident · 1 fatalClass 5 · ForeignRobin DR400 · Lienz, AustriaNTSB GAA23WA133Accident · 4 fatalClass 5 · ForeignPiper PA32 · Isla Mocha, ChileNTSB GAA23WA071Accident · 3 fatalClass 5 · ForeignCessna 172H · San Francisco, GuatemalaNTSB GAA23WA048Accident · 2 fatalClass 5 · ForeignChampion 7GCBC · Prijedori, Bosnia & HerzegovinaNTSB GAA23WA046Accident · 1 fatalClass 5 · ForeignAir Tractor AT502 · Brasnorte, BrazilNTSB GAA23WA029Accident · 8 fatalClass 3 · ForeignPiper PA-31-350 · Medellin, ColombiaNTSB GAA22WA265Accident · 2 fatalClass 3 · ForeignRobinson R66 · Zapallar, ChileNTSB GAA22WA181Accident · 4 fatalClass 5 · ForeignCessna 182 · Piracuara, ColombiaNTSB GAA22WA176Accident · 5 fatalClass 5 · ForeignCessna 207 · Carrefour, HaitiNTSB GAA22WA029Accident · 1 fatalClass 5 · ForeignCessna P210N · Dornbirn, AustriaNTSB GAA21WA229Accident · 7 fatalClass 3 · ForeignBeech B200GT · Piracicaba, BrazilNTSB GAA21WA161Accident · 1 fatalClass 4 · ForeignBeech V35 · Padua, ItalyNTSB GAA21WA076Accident · 1 fatalClass 4 · ForeignPiper PA-31-350 · South Bimini, BahamasNTSB GAA21WA062Accident · 1 fatalClass 5 · ForeignCessna 182 · Colon and El Marques, Queretaro, MexicoNTSB GAA21WA068Accident · 1 fatalClass 5 · ForeignWag-a-Bond Traveller Wag-A-Bond · Lac Barron QC, CanadaNTSB GAA21WA005Accident · 1 fatalClass 5 · ForeignBeech 95B55 · Sao Pedro, SP, BrazilNTSB GAA20WA133Accident · 4 fatalForeign investigationCommander 114 · Fur airport, DenmarkThe government of Denmark has notified the NTSB of an accident involving a COMMANDER 114 airplane that occurred on August 30, 2020. The NTSB has appointed a U.S. Accredited Representative to assist the government of Denmark's investigation under the…NTSB GAA20WA134Accident · 1 fatalForeign investigationBeech 35 · Teresina, BrazilThe government of Brazil has notified the NTSB of an accident involving a BEECH 35 airplane that occurred on August 28, 2020. The NTSB has appointed a U.S. Accredited Representative to assist the government of Brazil's investigation under the provisions of…NTSB GAA20WA132Accident · 2 fatalClass 5 · ForeignAviamilano Falco F8L · Sibari, Italy