Fatal NTSB investigations, Outside the U.S.
210 cases where the phase of flight was Approach.
Cases per year
| 1964 | 1 |
|---|---|
| 1965 | 3 |
| 1966 | 4 |
| 1967 | 3 |
| 1968 | 4 |
| 1969 | 2 |
| 1970 | 4 |
| 1971 | 2 |
| 1972 | 5 |
| 1973 | 3 |
| 1974 | 2 |
| 1977 | 1 |
| 1979 | 1 |
| 1984 | 1 |
| 2008 | 3 |
| 2009 | 10 |
| 2010 | 5 |
| 2011 | 8 |
| 2012 | 6 |
| 2013 | 15 |
| 2014 | 10 |
| 2015 | 8 |
| 2016 | 19 |
| 2017 | 13 |
| 2018 | 14 |
| 2019 | 14 |
| 2020 | 8 |
| 2021 | 10 |
| 2022 | 6 |
| 2023 | 7 |
| 2024 | 7 |
| 2025 | 8 |
| 2026 | 3 |
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 = 500)
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 = 500)
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 GAA26WA085Accident · 5 fatalClass 3 · ForeignLearjet 45XR · Sawantwadi, IndiaNTSB DCA26WA108Accident · 10 fatalClass 5 · ForeignATR ATR42 · Makassar, IndonesiaNTSB GAA26WA068Accident · 1 fatalClass 5 · ForeignPiper PA20 · Bloemfontein, South AfricaNTSB GAA26WA052Accident · 10 fatalClass 5 · ForeignCessna 650 · Toluca, MexicoNTSB GAA26WA043Accident · 1 fatalClass 5 · ForeignVulcanair P68 · Waterford Regional Airport, IrelandNTSB GAA26WA014Accident · 1 fatalClass 5 · ForeignTextron 182T · Nuuk, GreenlandNTSB GAA25WA280Accident · 4 fatalClass 5 · ForeignDehavilland DHC-2 MK. 1 · St Theresa, CanadaNTSB GAA25WA223Accident · 3 fatalClass 5 · ForeignRobin DR400 · Voglans, FranceNTSB GAA25WA239Accident · 1 fatalClass 3 · ForeignCessna TU206 · Vereda El Canelón, ColombiaNTSB GAA25WA133Accident · 1 fatalClass 4 · ForeignPiper PA32 · Rondonopolis, BrazilNTSB GAA25WA069Accident · 2 fatalClass 5 · ForeignPiper PA18 · Les Allues, FranceNTSB GAA25WA015Accident · 8 fatalClass 5 · ForeignSikorsky S76 · Port Harcourt, NigeriaNTSB GAA24WA285Accident · 2 fatalClass 4 · ForeignPiper PA-23-250 · Nassau, BahamasNTSB GAA24WA245Accident · 2 fatalClass 5 · ForeignLearjet 35 · Matupa, BrazilNTSB ENG24WA023Accident · 1 fatalClass 5 · ForeignCessna 208B · Spa, Belgium, BelgiumNTSB GAA24WA179Accident · 2 fatalClass 5 · ForeignPiper PA-34-200T · Santa Rosa, EcuadorNTSB GAA24WA154Accident · 2 fatalClass 5 · ForeignCessna 340 · Puerto Cabelio, VenezuelaNTSB GAA24WA131Accident · 9 fatalClass 5 · ForeignBeech E90 · Lote Ocho, MexicoNTSB DCA23WA416Accident · 10 fatalClass 5 · ForeignRaytheon 390 · Elmina, MalaysiaNTSB GAA23WA230Accident · 2 fatalClass 5 · ForeignCessna 172 · Trujillo, PeruNTSB GAA23WA198Accident · 1 fatalClass 4 · ForeignPiper 23 · Thirsk, United KingdomNTSB GAA23WA147Accident · 2 fatalClass 5 · ForeignCessna 182 · Shell, EcuadorNTSB GAA23WA129Accident · 1 fatalClass 5 · ForeignLancair 360 · Taurages, LithuaniaNTSB GAA23WA104Accident · 4 fatalClass 4 · ForeignRobinson R44 · Sao Paulo, BrazilNTSB GAA23WA072Accident · 2 fatalClass 4 · ForeignRobinson R44 · Vargem Alta, BrazilNTSB GAA23WA076Accident · 2 fatalClass 5 · ForeignBanus Mark Glasair Super II FT · Wedderburn, AustraliaNTSB GAA23WA042Accident · 1 fatalClass 5 · ForeignPiper PA 46-350P · Happy Valley-Goose Bay, CanadaNTSB GAA22WA294Accident · 3 fatalClass 5 · ForeignCirrus SR22 · Toluca, MexicoNTSB GAA22WA269Accident · 2 fatalClass 5 · ForeignShort SC7 · Piotrków Trybunalski, PolandNTSB GAA22WA238Accident · 1 fatalClass 5 · ForeignCessna T210L · Puerto Plata, Dominican RepublicNTSB GAA22WA173Accident · 1 fatalClass 3 · ForeignRockwell 690 · Charallave, VenezuelaNTSB GAA22WA054Accident · 1 fatalClass 5 · ForeignCirrus Design SR22 · Auxerre, FranceNTSB GAA22WA024Accident · 5 fatalClass 5 · ForeignBeech C90 · Caratinga, BrazilNTSB GAA22WA019Accident · 1 fatalClass 5 · ForeignCessna 208 · Papua, Papua New GuineaNTSB GAA21WA250Accident · 1 fatalClass 5 · ForeignCessna T206 · La Pajarera, MexicoNTSB GAA21WA240Accident · 2 fatalClass 5 · ForeignCessna 182 · Samos Island, GreeceNTSB ENG21WA041Accident · 4 fatalClass 5 · ForeignLet L410 · Kazachinskoye, RussiaNTSB GAA21WA186Accident · 1 fatalClass 5 · ForeignCessna 208 · Norderney, GermanyNTSB ENG21WA047Accident · 1 fatalClass 5 · ForeignTecnam P2008 · Vardi, IndiaNTSB GAA21WA114Accident · 2 fatalClass 5 · ForeignLegacy 2000 · Oberramsern, SwitzerlandNTSB GAA21WA027Accident · 3 fatalClass 5 · ForeignPiper PA-28-140 · Ilopango, El SalvadorNTSB ERA21WA086Accident · 1 fatalClass 5 · ForeignBell 206 · Mambucaba, BrazilNTSB WPR21WA050Accident · 1 fatalClass 5 · ForeignCirrus SR22 · Nelspruit, South AfricaNTSB CEN20WA426Accident · 3 fatalClass 5 · ForeignCirrus SR22 · Le Chevillotte, FranceNTSB CEN20WA408Accident · 2 fatalForeign investigationRaven Aircraft Corppration Raven · Moosburg an der Isar, GermanyNTSB DCA20WA108Accident · 97 fatalForeign investigationAirbus A320 · Karachi, PakistanThe government of Pakistan has notified the NTSB of an accident involving an AIRBUS A320 with CFM56 engines that occurred on May 22, 2020. The NTSB has appointed a U.S. Accredited Representative to assist the government of Pakistan's investigation under the…NTSB WPR21WA018Accident · 1 fatalClass 5 · ForeignOsprey 2 Amphibian · Maitland Aerodrome, AustraliaNTSB ERA20WA170Accident · 1 fatalForeign investigationLearjet 35 · Esquel, ArgentinaThe government of Argentina has notified the NTSB of an accident involving a LEARJET 35 airplane that occurred on May 06, 2020. The NTSB has appointed a U.S. Accredited Representative to assist the government of Argentina's investigation under the provisions…NTSB CEN20WA097Accident · 1 fatalForeign investigationPiper PA60 · Pamplona, SpainThe National Transportation Safety Board was notified of an accident involving a Piper PA-60-602P, EC-HRJ, in Pamplona, Spain. This investigation is under the jurisdiction of the Comisión de Investigación de Accidentes e Incidentes de Aviación Civil in Spain.NTSB GAA20WA104Accident · 2 fatalForeign investigationCirrus SR22 · Salzburg, Austria, AustriaThe government of Austria has notified the NTSB of an accident involving a CIRRUS SR22 airplane that occurred on December 21, 2019. The NTSB has appointed a U.S. Accredited Representative to assist the government of Austria's investigation under the…