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 ANC78FA079Accident · 1 fatalClosedMaule M-5 · Sterling, AKNTSB FTW78FRA40Accident · Minor injuriesClosedGrumman G-164B · Devers, TXNTSB CHI78FEV53Accident · No injuriesClosedCessna 180A · Sparta, ILNTSB ANC78DAH22Accident · Minor injuriesClosedHelio Acft H-250 · Holy Cross, AKNTSB FTW78FA079Accident · 2 fatalClosedPiper J3C · Ferris, TXNTSB IAD78DKM24Accident · No injuriesClosedGrum Amer AA-5A · Greensboro, NCNTSB DEN78FA067Accident · 1 fatalClosedAeronca 11AC · Wray, CONTSB SEA78DYP52Accident · No injuriesClosedHiller Acft UH-12E · Moses Lake, WANTSB MIA78FLA50Accident · 1 fatalClosedBirdman TL1A · Deland, FLNTSB LAX78FUK04Accident · Serious injuriesClosedScorpion 133 · Tempe, AZNTSB OAK78FA048Accident · 1 fatalClosedWeatherly 201B · Greenfield, CANTSB MKC78DCD55Accident · No injuriesClosedPiper PA-25 · Milford, IANTSB MKC78DCD54Accident · No injuriesClosedCallair A-9B · Lake Park, IANTSB IAD78DLJ25Accident · No injuriesClosedCessna 188B · Zebvlon, NCNTSB SEA78FA061Accident · 2 fatalClosedPiper J3 · Lynden, WANTSB LAX78DUJ98Accident · No injuriesClosedCessna 188B · Mohave Valley, AZNTSB FTW78FPG85Accident · 1 fatalClosedPiper PA-18A · Lonoke, ARNTSB MKC78FER90Accident · Minor injuriesClosedCessna A188B · Clements, MNNTSB LAX78DUK08Accident · No injuriesClosedCessna 188 · San Simon, AZNTSB CHI78FEC50Accident · No injuriesClosedSikorsky S55B · Pontiac, MINTSB MKC78FA068Accident · 2 fatalClosedLuscombe 8A · Porcupine, SDNTSB DEN78FTE94Accident · No injuriesClosedHughes 269A · Crook, CONTSB MKC78DCQ34Accident · No injuriesClosedCessna 188 · Oxford, KSNTSB LAX78FVA79Accident · No injuriesClosedPiper PA-36 · Delano, CANTSB FTW78FRJ33Accident · Serious injuriesClosedPiper PA-18A · Vick, LANTSB MIA78DKJ85Accident · Serious injuriesClosedAero Comdr S2R · Montgomery, ALNTSB LAX78DUG55Accident · Minor injuriesClosedGrumman G-164A · Blythe, CANTSB FTW78FPG83Accident · 1 fatalClosedWeatherly 201C · Elaine, ARNTSB FTW78DPD29Accident · No injuriesClosedPiper PA-36 · Iowa Park, TXNTSB OAK78DVA83Accident · No injuriesClosedCessna 150 · Ceres, CANTSB MIA78FKJ82Accident · No injuriesClosedGrumman G-164 · Ashford, ALNTSB MIA78FA120Accident · 2 fatalClosedGrum-Amer AA1A · Toa Baja, PRNTSB OAK78DJA16Accident · No injuriesClosedHiller UH12E · Wahiawa, HINTSB MIA78FLG33Accident · No injuriesClosedBellanca 8GCBC · Ulmer, SCNTSB MIA78FKG75Accident · Serious injuriesClosedAero Comdr S2R · Summer, GANTSB CHI78FEX34Accident · No injuriesClosedGrumman G-164B · Kokomo, INNTSB MKC78DTK34Accident · No injuriesClosedPiper PA-18 · Milbank, SDNTSB MIA78DKJ81Accident · Minor injuriesClosedCessna C188 · Chipley, FLNTSB FTW78FRJ30Accident · Serious injuriesClosedPiper PA-28 · Haynesville, LANTSB FTW78DPG81Accident · No injuriesClosedGrumman G-164A · Dermott, ARNTSB FTW78FPG79Accident · Minor injuriesClosedAero Comdr S-2R · Lunsford, ARNTSB MIA78FLG32Accident · Serious injuriesClosedPiper PA-25 · Bennettsville, SCNTSB MIA78DLA47Accident · No injuriesClosedGrumman G-164A · Cairo, GANTSB OAK78FVD54Accident · 1 fatalClosedGrumman TS-2A · Laytonville, CANTSB NYC78FA082Accident · 1 fatalClosedCessna 150L · Prospect Harbr, MENTSB MIA78DKQ33Accident · No injuriesClosedGrumman G-164B · Benton, MSNTSB LAX78DUJ92Accident · Serious injuriesClosedCessna 152 · Parker, AZNTSB DEN78DTE88Accident · No injuriesClosedPiper PA-25 · Center, CONTSB MKC78DCJ42Accident · No injuriesClosedGrumman G-164 · Naper, NENTSB MIA78FKG74Accident · No injuriesClosedBell 47D1 · Hartwell, GA