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 IAD78FA006Accident · 1 fatalClosedPiper J-3 · Pulaski, TNNTSB DEN78FTC03Accident · No injuriesClosedPiper PA-28 · Gillette, WYNTSB FTW78DRG08Accident · No injuriesClosedBell 47G-2 · Edinburg, TXNTSB FTW78FQG05Accident · Minor injuriesClosedPiper PA-36 · New Deal, TXNTSB FTW78FQG03Accident · 1 fatalClosedPiper PA-25 · Smyer, TXNTSB OAK78FA001Accident · 2 fatalClosedCessna 150J · Klamath, CANTSB MKC78FER02Accident · No injuriesClosedCessna 172 · Afton, MNNTSB FTW78FA004Accident · 2 fatalClosedCessna 150L · Dewey, OKNTSB FTW78DQG04Accident · No injuriesClosedPiper PA-25 · Denver City, TXNTSB CHI78FA002Accident · No injuriesClosedSikorsky S-58E · Flat Rock, MINTSB CHI78DEV04Accident · No injuriesClosedPietenpol Camper · Marshall, ILNTSB MIA77FA005Accident · 2 fatalClosedPiper PA-28 · Brunswick, GANTSB FTW78DQG02Accident · No injuriesClosedPiper PA-25 · Denver City, TXNTSB FTW78FPA02Accident · 2 fatalClosedPiper J3C-65 · Terrell, TXNTSB IAD78FA003Accident · 1 fatalClosedBellanca 7GCBC · Sparta, TNNTSB MKC78FCQ01Accident · Minor injuriesClosedCessna 152 · Stafford, KSNTSB MIA77KKQ01Accident · No injuriesClosedGrumman G-164A · Flora, MSNTSB FTW78FRD02Accident · No injuriesClosedCessna A188B · De Ridder, LANTSB CHI78FEV01Accident · No injuriesClosedBell 47G4 · Crossville, ILNTSB IAD78FA001Accident · No injuriesClosedFairchild M62A · Bealton, VANTSB DEN78FA001Accident · 2 fatalClosedBellanca 8KCAB · Vernal, UTNTSB SEA78DYP01Accident · No injuriesClosedCessna 206 · Priest Rpd Dam, WANTSB FTW78DRD01Accident · Minor injuriesClosedBell 47G2A1 · Kenner, LANTSB LAX77FVA59Accident · 2 fatalClosedCessna 172M · Bakersfield, CANTSB LAX77FVG64Accident · Minor injuriesClosedChampion 7ECA · Blythe, CANTSB FTW77FPG90Accident · No injuriesClosedPiper PA-25 · Caraway, ARNTSB FTW77FA076Accident · 1 fatalClosedRyan ST-A · Mason, TXNTSB FTW77DPG89Accident · No injuriesClosedGrumman G-164 · Hughes, ARNTSB DEN77FTC32Accident · Serious injuriesClosedPiper PA-18 · Weston, WYNTSB CHI77FEK33Accident · No injuriesClosedBell 47G-2A · Big Plaines, OHNTSB FTW77DPG88Accident · No injuriesClosedPiper PA-25 · Paragould, ARNTSB MIA77FA091Accident · 2 fatalClosedAeronca 7DC · Cleveland, MSNTSB LAX77FA075Accident · 1 fatalClosedBellanca 7AC · Yucca Valley, CANTSB OAK77DVA58Accident · No injuriesClosedGrumman G-164A · Woodlake, CANTSB MIA77FKT78Accident · No injuriesClosedCessna 150 · Labelle, FLNTSB NYC77FHM26Accident · 1 fatalClosedMahler-Wbr PJ-260 · Westhampton, NYNTSB MKC77FCA32Accident · Serious injuriesClosedCessna 172E · Senath, MONTSB MIA77FKG81Accident · 1 fatalClosedAero Comdr 600S2R · Albany, GANTSB SEA77FYP45Accident · Minor injuriesClosedPiper PA-25 · Pasco, WANTSB OAK77FA055Accident · 1 fatalClosedCessna 150L · Concord, CANTSB FTW77FQG55Accident · No injuriesClosedAero Comdr A9B · Fairview, TXNTSB IAD77;ID30Accident · Minor injuriesClosedPiper PA-22 · Pungo, VANTSB SEA77DYP47Accident · Minor injuriesClosedAero Comdr S2R · Touchet, WANTSB MIA77DKJ84Accident · No injuriesClosedPiper PA-25 · Bonifay, FLNTSB LAX77DUM39Accident · Minor injuriesClosedPiper PA-36 · Calexico, CANTSB MIA77FKG79Accident · Minor injuriesClosedAero Comdr S2R · Cordele, GANTSB MIA77FKG76Accident · No injuriesClosedPiper PA36 · Byromville, GANTSB IAD77FLQ23Accident · No injuriesClosedCessna A188B · Hopkinsville, KYNTSB FTW77FQD28Accident · 1 fatalClosedPiper PA-25 · Coyanosa, TXNTSB DEN77FTM29Accident · Serious injuriesClosedCallair A-6 · Cedar City, UT