Fatal NTSB investigations, Outside the U.S.
329 cases where the phase of flight was Maneuvering.
Cases per year
| 1964 | 1 |
|---|---|
| 1966 | 2 |
| 1967 | 1 |
| 1968 | 1 |
| 1970 | 2 |
| 1971 | 2 |
| 1972 | 2 |
| 1973 | 1 |
| 1975 | 1 |
| 1978 | 2 |
| 1987 | 1 |
| 1990 | 1 |
| 1997 | 1 |
| 1999 | 2 |
| 2008 | 3 |
| 2009 | 8 |
| 2010 | 9 |
| 2011 | 13 |
| 2012 | 16 |
| 2013 | 17 |
| 2014 | 14 |
| 2015 | 33 |
| 2016 | 25 |
| 2017 | 29 |
| 2018 | 29 |
| 2019 | 17 |
| 2020 | 13 |
| 2021 | 10 |
| 2022 | 23 |
| 2023 | 17 |
| 2024 | 14 |
| 2025 | 16 |
| 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 = 450)
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 = 450)
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 GAA26WA239Accident · 1 fatalClass 5 · ForeignSupermarine Spitfire · Muluckine, AustraliaNTSB GAA26WA142Accident · 1 fatalClass 5 · ForeignCessna 172 · Ausnek, NamibiaNTSB GAA26WA117Accident · 3 fatalClass 5 · ForeignRobinson R44 · Amaranka, RussiaNTSB GAA26WA059Accident · 1 fatalClass 5 · ForeignCessna 170 · Rio de Janeiro, BrazilNTSB GAA26WA025Accident · 1 fatalClass 5 · ForeignAir Tractor AT401 · Jaú, BrazilNTSB GAA26WA007Accident · 1 fatalClass 5 · ForeignRobinson R22 · Rutland Plains, AustraliaNTSB GAA26WA003Accident · 1 fatalClass 4 · ForeignRobinson R22 · Brogans Creek, AustraliaNTSB GAA25WA255Accident · 1 fatalClass 5 · ForeignAir Tractor AT802 · Yeelanna, AustraliaNTSB GAA25WA222Accident · 2 fatalClass 5 · ForeignLional Ray Ward Ward F-4 Rocket · Mallorca, SpainNTSB GAA25WA244Accident · 2 fatalClass 3 · ForeignProMecc Aerosapce Freccia FG · Azzano Mella, ItalyNTSB GAA25WA155Accident · 1 fatalClass 5 · ForeignCessna 182 · Allen, ArgentinaNTSB GAA25WA144Accident · 1 fatalClass 5 · ForeignCessna 188 · Sangkiang Village, Papua New GuineaNTSB GAA25WA150Accident · 1 fatalClass 5 · ForeignAyres S2R · SãO José Do Rio Claro, BrazilNTSB GAA25WA117Accident · 1 fatalClass 5 · ForeignAir Tractor AT502 · Balsas, BrazilNTSB GAA25WA099Accident · 2 fatalClass 5 · ForeignVans RV7 · Nizhny Novgorodr, RussiaNTSB GAA25WA086Accident · 1 fatalClass 5 · ForeignBell 206L-4 · Bentong Helicopter Landing Site, MalaysiaNTSB GAA25WA098Accident · 3 fatalClass 5 · ForeignRobinson R44 · Cruzilia, BrazilNTSB GAA25WA080Accident · 1 fatalClass 5 · ForeignCessna 188 · Canarana, BrazilNTSB GAA25WA057Accident · 1 fatalClass 5 · ForeignThrush S2R · Santa Ines, HondurasNTSB GAA25WA042Accident · 1 fatalClass 5 · ForeignChampion 8KCAB · Vélez-Málaga, SpainNTSB GAA25WA045Accident · 2 fatalClass 5 · ForeignChristen Eagle II · Santiago, ChileNTSB GAA25WA037Accident · 1 fatalClass 5 · ForeignRobinson R44 · Maimuru, AustraliaNTSB GAA25WA031Accident · 1 fatalClass 5 · ForeignAerospatiale AS332L · Broken Hill, AustraliaNTSB GAA25WA029Accident · 1 fatalClass 5 · ForeignAir Tractor AT602 · SãO Paulo, BrazilNTSB GAA24WA276Accident · 1 fatalClass 5 · ForeignBoeing E75 · Frohngau, GermanyNTSB GAA24WA268Accident · 1 fatalClass 5 · ForeignAir Tractor AT802 · La Riola, ArgentinaNTSB GAA24WA227Accident · 2 fatalClass 5 · ForeignRobinson R22 · Curtin, AustraliaNTSB GAA24WA232Accident · 1 fatalClass 5 · ForeignEarthstar E Gull 2000 · New Brunswick, CanadaNTSB GAA24WA220Accident · 1 fatalClass 5 · ForeignRobinson R22 · Brasil Novo, BrazilNTSB GAA24WA205Accident · 1 fatalClass 5 · ForeignCessna 172 · Mulgathing, AustraliaNTSB GAA24WA311Accident · 1 fatalClass 5 · ForeignAir Tractor AT-502 · West Wyalong, AustraliaNTSB GAA24WA143Accident · 2 fatalClass 5 · ForeignExtra 300 · Tokol, Hungary, HungaryNTSB GAA24WA132Accident · 1 fatalClass 5 · ForeignCessna A188 · Lucas Do Rio Verde, BrazilNTSB GAA24WA061Accident · 3 fatalClass 5 · ForeignAir Tractor AT502 · Carletonville, South AfricaNTSB GAA24WA052Accident · 5 fatalClass 3 · ForeignBell 412 · Arau, GuyanaNTSB GAA24WA044Accident · 1 fatalClass 4 · ForeignRobinson R66 · Ramallo, ArgentinaNTSB GAA24WA043Accident · 4 fatalClass 5 · ForeignRockwell 112 · Kasberg, Grünau im Almtal, AustriaNTSB GAA24WA024Accident · 4 fatalClass 3 · ForeignRobinson R44 · Cirque de Salazie, RéunionNTSB GAA24WA013Accident · 1 fatalClass 5 · ForeignCessna 208 · Monêtier-Allemont, FranceNTSB GAA23WA253Accident · 2 fatalClass 5 · ForeignNorth American T28 · Székesfehérvár, HungaryNTSB GAA23WA209Accident · 1 fatalClass 5 · ForeignExtra 300 · Selänpää, FinlandNTSB GAA23WA184Accident · 2 fatalClass 4 · ForeignAmerican Champion 8KCAB · Charata, ArgentinaNTSB GAA23WA180Accident · 1 fatalClass 5 · ForeignRobinson R22 · Buchanan, AustraliaNTSB GAA23WA183Accident · 1 fatalClass 5 · ForeignAir Tractor AT802 · Ngodwana, South AfricaNTSB GAA23WA143Accident · 3 fatalClass 5 · ForeignRobinson R-44 · Shanxi, ChinaNTSB GAA23WA139Accident · 5 fatalClass 5 · ForeignCessna 206 · Santa Ana del Yucuma, BoliviaNTSB GAA23WA125Accident · 1 fatalClass 5 · ForeignEmbraer EMB203 · Tapurah, BrazilNTSB GAA23WA141Accident · 1 fatalClass 5 · ForeignRobinson R44 · Middlemount, AustraliaNTSB GAA23WA108Accident · 1 fatalClass 5 · ForeignGrumman G164 · Comercial, UruguayNTSB GAA23WA096Accident · 1 fatalClass 5 · ForeignPitts S1S · Trenque Lauquen, Argentina