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 FTW78FRA22Accident · Serious injuriesClosedGrumman G-164A · Rosharon, TXNTSB FTW78DDG37Accident · No injuriesClosedCessna 188 · Gould, ARNTSB LAX78FA049Accident · 1 fatalClosedPiper PA-32 · Redlands, CANTSB CHI78FEK20Accident · Minor injuriesClosedHughes 269B · Mechanicsburg, OHNTSB MKC79FER46Accident · No injuriesClosedBoeing E-75 · Perham, MNNTSB MKC78FCD25Accident · Serious injuriesClosedPiper PA-11 · Terril, IANTSB FTW78FRD30Accident · No injuriesClosedGrumman G-164A · Iowa, LANTSB FTW78DPG33Accident · No injuriesClosedGrumman G-164A · St.Charles, ARNTSB FTW78FRA20Accident · Serious injuriesClosedGrumman G-164B · La Ward, TXNTSB FTW78DPG32Accident · No injuriesClosedBell OH-13E · Fisher, ARNTSB SEA78FA031Accident · 1 fatalClosedBuhl Acft LA1 · Kimberly, IDNTSB MKC78FCG32Accident · Serious injuriesClosedCessna 150C · Odessa, MONTSB LAX78FUG28Accident · 1 fatalClosedPiper PA-25 · Blythe, CANTSB CHI78FA040Accident · 3 fatalClosedCessna 172M · Lapeer, MINTSB FTW78DPG31Accident · No injuriesClosedWeatherly 201B · Grady, ARNTSB DEN78FTE55Accident · No injuriesClosedPiper PA-18 · Burlington, CONTSB MKC78FER45Accident · Minor injuriesClosedBell 47G-2A · Arden Hills, MNNTSB MIA78FKG50Accident · No injuriesClosedPiper PA-36 · Byron, GANTSB IAD78FA065Accident · 2 fatalClosedN-American SNJ-5 · Greensboro, NCNTSB FTW78FRG42Accident · Serious injuriesClosedCessna 150 · Austin, TXNTSB SEA78FTI15Accident · No injuriesClosedHiller Acft UH-12E · Highwood, MTNTSB LAX78DVM25Accident · No injuriesClosedHiller Acft FH1100 · Santa Maria, CANTSB CHI78DEG09Accident · No injuriesClosedHughes 269C · New Carlisle, OHNTSB ANC78DAG54Accident · Minor injuriesClosedPiper PA-18 · King Salmon, AKNTSB IAD78DKM11Accident · Serious injuriesClosedAeronca 7ECA · Burnsville, NCNTSB FTW78DRG40Accident · No injuriesClosedBell 47G-2A · Rio Grande C., TXNTSB IAD78FLQ17Accident · No injuriesClosedGrumman G-164B · Monticello, KYNTSB MIA78DKG42Accident · No injuriesClosedGrumman G-164B · Sylvester, GANTSB FTW78DPG30Accident · No injuriesClosedGrumman G-164A · Stuttgart, ARNTSB SEA78DYA07Accident · No injuriesClosedPiper PA-25 · Midvale, IDNTSB MIA78DLA33Accident · No injuriesClosedCessna A188B · Moultrie, GANTSB MIA78FA077Accident · 2 fatalClosedHamilton T-28A · Huntsville, ALNTSB CHI78DEE33Accident · No injuriesClosedHughes 269C · Mendota, ILNTSB MIA78FKG41Accident · No injuriesClosedGrumman G-164A · Albany, GANTSB OAK78DVG34Accident · Minor injuriesClosedGrumman G-164 · Sutter, CANTSB OAK78FVG29Accident · 1 fatalClosedBoeing A-75N1 · Robbins, CANTSB OAK78DVA41Accident · Minor injuriesClosedPiper PA-36 · Huron, CANTSB NYC78FA047Accident · 2 fatalClosedCessna 150 · Mantoloking, NJNTSB MIA78FA075Accident · 3 fatalClosedLockheed 18-56 · Durbin, FLNTSB MIA78FA076Accident · 2 fatalClosedBeech D-18S · Ocala, FLNTSB MIA78FA073Accident · 2 fatalClosedBellanca 7ECA · Columbus, GANTSB OAK78FVD30Accident · Serious injuriesClosedBoeing A75N1 · Tracy, CANTSB FTW78DRA16Accident · No injuriesClosedGrumman G-164A · El Campo, TXNTSB CHI78FA036Accident · 2 fatalClosedBellanca 7KCAB · Rockford, ILNTSB FTW78DPJ17Accident · Minor injuriesClosedCessna 188 · Braman, OKNTSB MIA78FA069Accident · 1 fatalClosedCessna 172 · Benoit, MSNTSB FTW78FRJ13Accident · No injuriesClosedBell 47-G2A · Dupont, LANTSB FTW78FPA19Accident · Serious injuriesClosedCessna 15OM · Rice, TXNTSB SEA78FYP23Accident · 1 fatalClosedCallair A-9 · Springdale, WANTSB SEA78DYP22Accident · No injuriesClosedPiper PA-25 · George, WA