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 FTW76FPG46Accident · Serious injuriesClosedPiper PA-25 · Tuckerman, ARNTSB FTW76DRA26Accident · Minor injuriesClosedGrumman G-164A · Elcampo, TXNTSB OAK76FVM28Accident · Serious injuriesClosedCessna 188 · Castroville, CANTSB FTW76FPG45Accident · No injuriesClosedCessna 150D · Stuttgart, ARNTSB DEN76AD040Accident · Serious injuriesClosedHiller Acft UH-12E · Bluff, UTNTSB LAX76DUM23Accident · No injuriesClosedScorpion TOO · San Diego, CANTSB OAK76DVD25Accident · No injuriesClosedBell 47G-2 · Stockton, CANTSB OAK76DVA44Accident · Serious injuriesClosedBoeing A75N1 · Visalia, CANTSB OAK76DVD26Accident · No injuriesClosedPiper PA-25 · Tracy, CANTSB SEA76ATI15Accident · Serious injuriesClosedPiper PA-18 · Big Timber, MTNTSB MIA76DKT59Accident · No injuriesClosedBell 47D1 · South Bay, FLNTSB MIA76FLA34Accident · No injuriesClosedBeech E35 · Live Oak, FLNTSB IAD76AI058Accident · 2 fatalClosedPiper PA-22 · Mooresville, NCNTSB OAK76DVG47Accident · No injuriesClosedGrumman G-164A · Marysville, CANTSB MIA76AM068Accident · 2 fatalClosedEnstrom F-28A · Guntersville, ALNTSB NYC76DHD18Accident · No injuriesClosedCessna 172M · Atglen, PANTSB OAK76DVA43Accident · No injuriesClosedFairchild M-62 · Westley, CANTSB FTW76DPJ26Accident · Minor injuriesClosedBoeing A75N1 · Eldorado, OKNTSB FTW76DPJ25Accident · Minor injuriesClosedBell 47G-4 · Billings, OKNTSB OAK76FVA42Accident · Serious injuriesClosedAeronca 7AC · Chowchilla, CANTSB FTW76FPJ27Accident · No injuriesClosedCessna 182A · Stroud, OKNTSB DEN76AD035Accident · 1 fatalClosedChampion 7GCBC · Delta, CONTSB SEA76FYE25Accident · No injuriesClosedHughes 269B · Renton, WANTSB LAX76DUG36Accident · Serious injuriesClosedNaval Fcty N3N · Ripley, CANTSB FTW76DPJ24Accident · No injuriesClosedPiper PA-25 · Grandfield, OKNTSB ANC76DAG89Accident · No injuriesClosedCessna 180 · Iliamna, AKNTSB MIA76DKT57Accident · No injuriesClosedGlobe GC-1B · Homstead, FLNTSB CHI76FEA26Accident · No injuriesClosedCessna 175A · Glendale, INNTSB MIA76AM061Accident · 2 fatalClosedBoeing E75 · Palmetto, GANTSB IAD76DID20Accident · No injuriesClosedBell 47G-2 · Chesapeake, VANTSB OAK76FJA10Accident · No injuriesClosedHiller Acft UH-12E · Oahu, HINTSB ANC76AA065Accident · 1 fatalClosedBellanca 8KCAB · Dillingham, AKNTSB MIA76AM059Accident · 3 fatalClosedCessha 182 · Mayfield, GANTSB LAX76FUJ54Accident · No injuriesClosedS.N.A.I.S SA316B · Maricopa, AZNTSB OAK76FVG42Accident · Minor injuriesClosedCessna 180 · Red Bluff, CANTSB MIA76FLD39Accident · 1 fatalClosedUptonsunera I 2 · Sarasota, FLNTSB OAK76FJA09Accident · 1 fatalClosedBell 206B · Honolulu, HINTSB MIA76AM056Accident · 1 fatalClosedGrum Amer AA1-B · Ormond Beach, FLNTSB CHI76DEM24Accident · No injuriesClosedHughes 269C · Saginaw, MINTSB LAX76FVA18Accident · No injuriesClosedBell 47D-1 · Capistrano, CANTSB MKC76DTG12Accident · Serious injuriesClosedBellanca 7ECA · Goodrich, NDNTSB SEA76FTA09Accident · No injuriesClosedBell 206B · Miles City, MTNTSB OAK76DVM20Accident · No injuriesClosedBell 47G-2 · Salinas, CANTSB SEA76FYC26Accident · Minor injuriesClosedHiller Acft UH-12D · Nehalem, ORNTSB NYC76FNE12Accident · Serious injuriesClosedAeronca 7AC · Charlton, MANTSB DEN76DQD10Accident · No injuriesClosedBellanca 17-30A · Chamberino, NMNTSB MIA76AM045Accident · 2 fatalClosedCessna 120 · Warner Robins, GANTSB MIA76AM044Accident · 1 fatalClosedPiper PA-20 · Lighthouse Pt, FLNTSB FTW76FRJ12Accident · Serious injuriesClosedCessna 150F · Oil City, LANTSB SEA76AS026Accident · 1 fatalClosedPiper J3C-65 · Carbonado, WA