NTSB investigations
18,851 cases where the phase of flight was Maneuvering.
Cases, newest first
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.\"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."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 CHI81FEV27Accident · 1 fatalClosedCessna T188C · Ridgway, ILNTSB ANC81FA084Accident · 3 fatalClosedPiper PA-18 · Cordova, AKNTSB FTW81FA127Accident · 2 fatalClosedBellanca 8KCAB · Alma, ARNTSB FTW81FRJ26Accident · Serious injuriesClosedAeronca 7AC · Bastrop, LANTSB DEN81FTK15Accident · Minor injuriesClosedBellanca 14-19 · Arlington, SDNTSB ANC81DAG61Accident · No injuriesClosedPiper PA-18 · Kenai, AKNTSB LAX81FVG53Accident · Serious injuriesClosedHiller Acft UH-12E · Willows, CANTSB LAX81FVA55Accident · No injuriesClosedGrumman G-164A · Caruthers, CANTSB DEN81DTE62Accident · No injuriesClosedWeatherly 201B · Beulah, CONTSB CHI81FEM30Accident · No injuriesClosedGrumman G-164A · Howard City, MINTSB CHI81FEV26Accident · No injuriesClosedBrantly B-2B · Chapin, ILNTSB ANC81FA082Accident · Minor injuriesClosedHughes 369D · Umiat, AKNTSB CHI81FER59Accident · No injuriesClosedHiller Acft UH-12E · Glyndon, MNNTSB SEA81FYM32Accident · 1 fatalClosedMinicoupe Johnsn · Gaston, ORNTSB CHI81FA077Accident · 2 fatalClosedCessna 152 · E Liverpool, OHNTSB SEA81DYP27Accident · Minor injuriesClosedPiper PA-36 · Moses Lake, WANTSB ATL81DLA10Accident · No injuriesClosedCessna 188B · Coolidge, GANTSB NYC81DNC14Accident · No injuriesClosedWeatherly 201C · Washburn, MENTSB LAX81FVA54Accident · Serious injuriesClosedWeatherly 201A · Los Banos, CANTSB MIA81FA095Accident · 1 fatalClosedPiper PA-28 · Palm Bay, FLNTSB ANC81FA081Accident · 3 fatalClosedCessna 180 · Naknek, AKNTSB FTW81FRG55Accident · No injuriesClosedAir Tractor AT-301 · La Villa, TXNTSB FTW81DRJ21Accident · No injuriesClosedGrumman G-164B · Shreveport, LANTSB DEN81DTM40Accident · No injuriesClosedGrumman AG-CAT · Park Valley, UTNTSB ATL81FKJ24Accident · 1 fatalClosedPiper J3C-65 · Fadette, ALNTSB FTW81FRA45Accident · Minor injuriesClosedCessna 172 · Palacios, TXNTSB CHI81FEV24Accident · 1 fatalClosedPiper PA-25 · Olney, ILNTSB SEA81DYA15Accident · No injuriesClosedPiper PA-25 · Shelley, IDNTSB FTW81FA120Accident · 1 fatalClosedSoloy 47G-2A · Vivian, LANTSB SEA81FYK11Accident · Serious injuriesClosedAeronca KCA · Beatty, ORNTSB SEA81DYP26Accident · Minor injuriesClosedBell 47G-2A · Moses Lake, WANTSB CHI81FER51Accident · Minor injuriesClosedBoeing A75N1 · Cottage Grove, MNNTSB FTW81FRG53Accident · Serious injuriesClosedGrumman G-164A · Mercedes, TXNTSB ATL81FKQ19Accident · Serious injuriesClosedCessna A188B · Benoit, MSNTSB FTW81FQG40Accident · No injuriesClosedGrumman G-164B · Springlake, TXNTSB CHI81FER49Accident · No injuriesClosedCessna A188A · Crookston, MNNTSB LAX81DUG37Accident · No injuriesClosedTexas Heli M74 · Blythe, CANTSB NYC81FFJ15Accident · 1 fatalClosedScorpion II · Palmyra, NYNTSB FTW81FA115Accident · 1 fatalClosedGreat Lakes 2T-1A2 · Jacktown, OKNTSB CHI81FEP27Accident · Minor injuriesClosedCessna 172N · Hartford, WINTSB CHI81FEI25Accident · No injuriesClosedCessna 150L · Wadsworth, OHNTSB CHI81FEC31Accident · Serious injuriesClosedBellanca 8KCAB · Hillsdale, MINTSB ATL81FA088Accident · 1 fatalClosedPiper PA-28R · Beach, GANTSB LAX81DUQ26Accident · No injuriesClosedTexas Hel M74A · Rosamond, CANTSB CHI81FEV23Accident · Serious injuriesClosedCessna A188B · Metropolis, ILNTSB CHI81DEM24Accident · No injuriesClosedPiper PA-25 · Langston, MINTSB FTW81DPG51Accident · No injuriesClosedGrumman G-164 · Cash, ARNTSB CHI81FEP34Accident · No injuriesClosedSikorsky HRS-1 · Rosedale, WINTSB MKC81FCJ19Accident · Serious injuriesClosedCessna 188 · Holdrege, NENTSB FTW81DPM15Accident · Serious injuriesClosedCessna A188B · Mcalester, OK