NTSB investigations, Outside the U.S.
545 cases where the phase of flight was Maneuvering.
Cases per year
| 1964 | 4 |
|---|---|
| 1965 | 3 |
| 1966 | 6 |
| 1967 | 4 |
| 1968 | 2 |
| 1969 | 1 |
| 1970 | 5 |
| 1971 | 3 |
| 1972 | 3 |
| 1973 | 3 |
| 1974 | 1 |
| 1975 | 1 |
| 1978 | 2 |
| 1987 | 1 |
| 1990 | 1 |
| 1997 | 1 |
| 1999 | 2 |
| 2003 | 1 |
| 2007 | 1 |
| 2008 | 4 |
| 2009 | 9 |
| 2010 | 9 |
| 2011 | 18 |
| 2012 | 17 |
| 2013 | 21 |
| 2014 | 19 |
| 2015 | 42 |
| 2016 | 30 |
| 2017 | 37 |
| 2018 | 36 |
| 2019 | 25 |
| 2020 | 25 |
| 2021 | 39 |
| 2022 | 41 |
| 2023 | 41 |
| 2024 | 35 |
| 2025 | 40 |
| 2026 | 12 |
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 = 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."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 GAA26WA240Accident · No injuriesClass 5 · ForeignAir Tractor AT502 · Moncoes, BrazilNTSB GAA26WA239Accident · 1 fatalClass 5 · ForeignSupermarine Spitfire · Muluckine, AustraliaNTSB GAA26WA191Accident · No injuriesClass 5 · ForeignCessna 188 · De Los TsáChilas, EcuadorNTSB GAA26WA142Accident · 1 fatalClass 5 · ForeignCessna 172 · Ausnek, NamibiaNTSB GAA26WA133Accident · No injuriesClass 3 · ForeignCessna C180 · El Cerrito, ColombiaNTSB GAA26WA120Accident · No injuriesClass 5 · ForeignBeech B-60 · Egelsbach, GermanyNTSB GAA26WA117Accident · 3 fatalClass 5 · ForeignRobinson R44 · Amaranka, RussiaNTSB GAA26WA110Incident · No injuriesClass 5 · ForeignAir Tractor AT502 · Paranatinga, BrazilNTSB GAA26WA131Incident · Minor injuriesClass 5 · ForeignAvion Mudry CAP 10B · Of, AustraliaNTSB GAA26WA098IncidentClass 5 · ForeignBell 212 · Mt Hotham Aerodrome, AustraliaNTSB GAA26WA080Accident · Minor injuriesClass 5 · ForeignAir Tractor AT401 · Planalto da Serra, BrazilNTSB GAA26WA079Accident · No injuriesClass 5 · ForeignAir Tractor AT502 · Barreiras, BrazilNTSB GAA26WA061Accident · No injuriesClass 5 · ForeignCessna T188 · Biobio Region, ChileNTSB GAA26WA059Accident · 1 fatalClass 5 · ForeignCessna 170 · Rio de Janeiro, BrazilNTSB GAA26WA026AccidentClass 5 · ForeignRobinson R-66 · Wellington, New ZealandNTSB GAA26WA025Accident · 1 fatalClass 5 · ForeignAir Tractor AT401 · Jaú, BrazilNTSB GAA26WA007Accident · 1 fatalClass 5 · ForeignRobinson R22 · Rutland Plains, AustraliaNTSB GAA26WA009Accident · Serious injuriesClass 4 · ForeignBell 214B-1 · Squamish, CanadaNTSB ENG26WA002AccidentClass 5 · ForeignThrush S2R · San Ramón de la Nueva Orán, ArgentinaNTSB GAA26WA003Accident · 1 fatalClass 4 · ForeignRobinson R22 · Brogans Creek, AustraliaNTSB GAA26WA002Accident · No injuriesClass 3 · ForeignCirrus SR22 · Al-Maktoum, United Arab EmiratesNTSB GAA25WA255Accident · 1 fatalClass 5 · ForeignAir Tractor AT802 · Yeelanna, AustraliaNTSB GAA25WA224Accident · No injuriesClass 5 · ForeignCessna 188 · Guayabal-Meta, ColombiaNTSB GAA25WA222Accident · 2 fatalClass 5 · ForeignLional Ray Ward Ward F-4 Rocket · Mallorca, SpainNTSB GAA25WA236Accident · Serious injuriesClass 5 · ForeignBell 206 · Ontario, CanadaNTSB GAA25WA244Accident · 2 fatalClass 3 · ForeignProMecc Aerosapce Freccia FG · Azzano Mella, ItalyNTSB ENG25WA056AccidentClass 5 · ForeignAgustaWestlands AW119 Mkii · Britânia, state of Goiás, BrazilNTSB GAA25WA225AccidentClass 5 · ForeignRobinson R22 · Anthony Lagoon, AustraliaNTSB GAA25WA226Accident · Minor injuriesClass 5 · ForeignAir Tractor AT301 · Cienaga, ColombiaNTSB GAA25WA158Incident · No injuriesClass 5 · ForeignAir Tractor AT602 · St George Aerodrome, AustraliaNTSB 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 GAA25WA232AccidentClass 5 · ForeignRobinson R22 Beta · Qld, AustraliaNTSB GAA25WA129Accident · No injuriesClass 5 · ForeignMcdonnell Douglas Helicopter 600 · Dos Ríos, MexicoNTSB GAA25WA117Accident · 1 fatalClass 5 · ForeignAir Tractor AT502 · Balsas, BrazilNTSB GAA25WA111Accident · No injuriesClass 5 · ForeignPiper PA-25-150 · Pinzon, ArgentinaNTSB GAA25WA099Accident · 2 fatalClass 5 · ForeignVans RV7 · Nizhny Novgorodr, RussiaNTSB GAA25WA151Accident · No injuriesClass 5 · ForeignCessna 188 · La Puntilla, EcuadorNTSB GAA25WA097Accident · Minor injuriesClass 5 · ForeignPiper PA38 · Ilpango,, El SalvadorNTSB GAA25WA147Accident · Minor injuriesClass 4 · ForeignBell 206 · Copey - Cesar, ColombiaNTSB GAA25WA104Accident · Minor injuriesClass 5 · ForeignPiper PA25 · Morcovia, HondurasNTSB GAA25WA089Accident · Minor injuriesClass 5 · ForeignPiper PA25 · Santa Cruz, HondurasNTSB GAA25WA088Accident · Serious injuriesClass 5 · ForeignJodel DR1050 · Clermont, IrelandNTSB GAA25WA086Accident · 1 fatalClass 5 · ForeignBell 206L-4 · Bentong Helicopter Landing Site, MalaysiaNTSB GAA25WA079Accident · Serious injuriesClass 5 · ForeignCessna 188 · Santa Cruz, BoliviaNTSB GAA25WA098Accident · 3 fatalClass 5 · ForeignRobinson R44 · Cruzilia, BrazilNTSB GAA25WA247Accident · Serious injuriesClass 3 · ForeignEmbraer EMB203 · Correntina, BrazilNTSB GAA25WA080Accident · 1 fatalClass 5 · ForeignCessna 188 · Canarana, BrazilNTSB GAA25WA057Accident · 1 fatalClass 5 · ForeignThrush S2R · Santa Ines, Honduras