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 FTW79DRA22Accident · Minor injuriesClosedGrumman G-164A · Bay City, TXNTSB OAK79FJA11Accident · No injuriesClosedBellanca 7GCBC · Waipahu, HINTSB MIA79FA083Accident · 1 fatalClosedGlobe Swift GC1B · Arcadia, FLNTSB FTW79DPG35Accident · No injuriesClosedGrumman G-164B · Lonoke, ARNTSB FTW79FPD19Accident · Serious injuriesClosedAeronca 7AC · Justin, TXNTSB SEA79DYA12Accident · No injuriesClosedHughes 269B · Gooding, IDNTSB OAK79DVG37Accident · Serious injuriesClosedWeatherly 201B · Robbins, CANTSB OAK79DVG36Accident · No injuriesClosedGrumman G-164 · Richvale, CANTSB FTW79FPA16Accident · Serious injuriesClosedPiper PA-25 · Frisco, TXNTSB CHI79FA049Accident · 1 fatalClosedBeech E18S · Burton, OHNTSB CHI79FEP45Accident · Serious injuriesClosedEaa Biplane P2 · Cottage Grove, WINTSB SEA79DYA11Accident · Minor injuriesClosedAir Tractor AT-301 · Rigby, IDNTSB MKC79FCQ21Accident · No injuriesClosedCessna A188B · Minneapolis, KSNTSB MIA79DA080Accident · 1 fatalClosedPiper PA-16 · Savannah, GANTSB LAX79DUQ28Accident · Minor injuriesClosedBell 47G3B1 · Newhall, CANTSB FTW79FPG33Accident · Serious injuriesClosedGrumman G-164A · Piggott, ARNTSB DEN79FQD06Accident · 1 fatalClosedPitts S1 · Artesia, NMNTSB LAX79FVA31Accident · No injuriesClosedPiper PA-44 · Kernville, CANTSB DEN79FA037Accident · 2 fatalClosedCessna 172 · Centennial, WYNTSB SEA79FYP16Accident · Serious injuriesClosedPiper PA-25 · Orofino, IDNTSB MIA79DKQ10Accident · Minor injuriesClosedHiller UH12D · Drew, MSNTSB SEA79FYP15Accident · 1 fatalClosedCallair A-9 · Dayton, WANTSB MKC79FCG41Accident · Serious injuriesClosedPiper PA-25 · Camdenton, MONTSB FTW79DPD17Accident · Minor injuriesClosedCallair A-9 · Newcastle, TXNTSB MKC79FCQ20Accident · 1 fatalClosedPiper PA-25 · Mayday, KSNTSB OAK79DVA30Accident · Minor injuriesClosedHiller UH-12E · Gustine, CANTSB SEA79DYP14Accident · No injuriesClosedBell 47G-3B · Wenatchee, WANTSB SEA79DYP23Accident · No injuriesClosedPiper PA-36 · Mesa, WANTSB MIA79ELA24Accident · Serious injuriesClosedBell 47G3 · Palatka, FLNTSB FTW79DRA20Accident · No injuriesClosedBell 47-G4 · Alvin, TXNTSB FTW79DRG27Accident · No injuriesClosedAero-Comdr S-2R · Premont, TXNTSB OAK79FVM18Accident · Minor injuriesClosedPitts S2A · Moss Landing, CANTSB OAK79DVA27Accident · No injuriesClosedBoeing A75 · Madera, CANTSB MIA79FKQ07Accident · Serious injuriesClosedGrumman G164A · Lucedale, MSNTSB CHI79FEV17Accident · No injuriesClosedGrumman G-164B · Sandoval, ILNTSB CHI79FEY16Accident · No injuriesClosedCessna A188-B · Thompsonville, ILNTSB LAX79FA041Accident · 4 fatalClosedCessna 182E · Glamis, CANTSB SEA79FYP12Accident · Minor injuriesClosedWeatherly 201B · Pomeroy, WANTSB LAX79FUM10Accident · Serious injuriesClosedCessna 150F · Julian, CANTSB FTW79FPD14Accident · Serious injuriesClosedChampion 7FC · Stephenville, TXNTSB FTW79FA072Accident · 2 fatalClosedBellanca 7GCBC · Crowell, TXNTSB MIA79FA069Accident · 1 fatalClosedAmer Avco AA-5 · Marathon, FLNTSB MIA79FKT51Accident · 1 fatalClosedGrumman G-164A · Clewiston, FLNTSB OAK79DVG33Accident · No injuriesClosedPiper PA-25 · Gerber, CANTSB LAX79FA038Accident · 1 fatalClosedBellanca 8KCAB · Malibu, CANTSB LAX79DUQ26Accident · No injuriesClosedBell 47G2M · Guadalupe, CANTSB CHI79DA039Accident · 1 fatalClosedHughes 369D · Pekin, ILNTSB IAD79FA041Accident · 1 fatalClosedCessna 305A · Fair Bluff, NCNTSB LAX79FA037Accident · 2 fatalClosedGlobe Swift GC1B · Parker, AZNTSB SEA79DYM23Accident · No injuriesClosedHiller Acft UH-12E · Friend, OR