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 MKC75FER16Accident · Serious injuriesClosedZimmerman S-1C · Waseca, MNNTSB MKC75AK013Accident · 1 fatalClosedBellanca 8KCAB · Papillion, NENTSB CHI75FEE12Accident · 1 fatalClosedPiper J3C-65 · Kankakee, ILNTSB ANC75DAG19Accident · Serious injuriesClosedCessna 172 · Kodiak, AKNTSB OAK75AP008Accident · 2 fatalClosedCessna 150 · Bear Valley, CANTSB MIA75FLA11Accident · Serious injuriesClosedPiper PA-18 · Altha, FLNTSB MIA75FLA09Accident · Minor injuriesClosedPiper PA-25 · Graceville, FLNTSB FTW75FRA07Accident · No injuriesClosedAero Comdr 600S2R · Hearne, TXNTSB CHI75DEP16Accident · No injuriesClosedBoeing A75N1 · Friendship, WINTSB ANC75DAG12Accident · No injuriesClosedPiper PA-18 · Chitina, AKNTSB MKC75FCJ18Accident · No injuriesClosedPiper PA-25 · Cozad, NENTSB FTW75FRJ06Accident · 1 fatalClosedPiper PA-25 · Colfax, LANTSB MKC75FCD08Accident · No injuriesClosedCallair A-9B · Harcourt, IANTSB MIA75D1G11Accident · Minor injuriesClosedPiper PA-18A · Lugoff, SCNTSB FTW75FRA05Accident · Serious injuriesClosedAeronca 7CCM · Groveton, TXNTSB CHI75FEK02Accident · No injuriesClosedCessna 172F · Pauldin, OHNTSB SEA75DYG07Accident · No injuriesClosedBell 47G-2 · Royal City, WANTSB MIA75DKQ07Accident · Minor injuriesClosedBoeing A75N1 · Leland, MSNTSB MIA75DKQ06Accident · No injuriesClosedGrumman G-164 · Rolling Fork, MSNTSB LAX75FUJ16Accident · 2 fatalClosedCessna 150K · New River, AZNTSB CHI75FEC08Accident · Minor injuriesClosedBellanca 7GCAA · Clio, MINTSB OAK75AP006Accident · 1 fatalClosedPiper PA-18A · Meridian, CANTSB ANC75DAG16Accident · No injuriesClosedTaylorcraft BC12-D · Skwentna, AKNTSB MKC75FCQ12Accident · Minor injuriesClosedBellanca 7KCAB · Liberal, KSNTSB FTW75FRG14Accident · No injuriesClosedAero Comdr 600S2R · Mathis, TXNTSB MKC75FCG10Accident · No injuriesClosedPiper PA-28 · Meridan, KSNTSB MIA75DLG09Accident · Minor injuriesClosedCessna 188B · Cameron, SCNTSB IAD75DIJ03Accident · Serious injuriesClosedBell 47G2A1 · Layland, WVNTSB FTW75DRJ03Accident · No injuriesClosedCessna 188B · Mer Rouge, LANTSB MKC75AK011Accident · 6 fatalClosedPiper PA-30 · Jackson, MNNTSB LAX75DUJ19Accident · No injuriesClosedNaval Fcty N3N-1 · Queen Creek, AZNTSB FTW75AF006Accident · No injuriesClosedBell 206B · Grand Isle, LANTSB DEN75DTE14Accident · Serious injuriesClosedPiper PA-18 · Kit Carson, CONTSB SEA75DYA09Accident · No injuriesClosedBoeing A75 · Shelley, IDNTSB CHI75FEP11Accident · 2 fatalClosedThorpe T-18 · Oshkosh, WINTSB CHI74FEP13Accident · No injuriesClosedBell 47D1 · Centerville, WINTSB MIA75DKJ08Accident · No injuriesClosedPiper PA-28 · Sylacauga, ALNTSB IAD75DLJ04Accident · No injuriesClosedPiper PA-25 · Lagrange, NCNTSB OAK75FXQ09Accident · No injuriesClosedPiper PA-36 · Winnemucca, NVNTSB FTW75FQD07Accident · No injuriesClosedSnow 600S2D · Fabens, TXNTSB MIA75DKJ07Accident · No injuriesClosedBoeing A75 · Marion, ALNTSB IAD75FIJ03Accident · Serious injuriesClosedCallair A-9 · Rowland, NCNTSB OAK75FVA10Accident · Serious injuriesClosedBoeing A75 · Selma, CANTSB MKC75FTG09Accident · No injuriesClosedCessna 210D · Wahpeton, MNNTSB FTW75DPG09Accident · No injuriesClosedPiper PA-25 · Piggott, ARNTSB SEA75DYA08Accident · No injuriesClosedPiper PA-25 · Payette, IDNTSB FTW75FQG13Accident · No injuriesClosedPiper PA-25 · Slaton, TXNTSB OAK75DXQ11Accident · No injuriesClosedSnow 600S2D · Orovada, NVNTSB NYC74AN014Accident · 1 fatalClosedAeronca 7AC · Roseville, PANTSB IAD75AI004Accident · 2 fatalClosedBellanca 7GCBC · Archdale, NC