NTSB investigations
18,850 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 MKC70DCJ27Accident · No injuriesClosedBell 47D1 · David City, NENTSB SEA70FDG09Accident · No injuriesClosedHiller Acft UH-12B · Sandcoulee, MTNTSB SEA70FDG08Accident · No injuriesClosedPiper PA-18 · Cascade, MTNTSB SEA70DDA10Accident · No injuriesClosedPiper PA-18 · Sidney, MTNTSB OAK70DVG24Accident · No injuriesClosedBoeing A75N1 · Sacramento, CANTSB SEA70DXM15Accident · No injuriesClosedAero Comdr A-9B · Rupert, IDNTSB MIA70DKG35Accident · Serious injuriesClosedPiper PA-25 · Ocilla, GANTSB OAK70DXQ14Accident · Minor injuriesClosedBell 47G3B · Fallon, NVNTSB FTW70FRD18Accident · No injuriesClosedGrumman G-164 · Ville Platte, LANTSB OAK70DVM17Accident · No injuriesClosedBell 47G-2 · Gonzales, CANTSB IAD70DLJ05Accident · Minor injuriesClosedPiper J3C-65 · Knotts Island, NCNTSB CHI70FBJ35Accident · No injuriesClosedBell 47G-2 · Hart, MINTSB SEA70FWG14Accident · 1 fatalClosedGrumman G-164 · Touchet, WANTSB SEA70FDG06Accident · 1 fatalClosedPiper PA-25 · Big Sandy, MTNTSB IAD70DIJ04Accident · No injuriesClosedBell 47G4 · Terra Ceia, NCNTSB FTW70DPG27Accident · Minor injuriesClosedCallair A-9 · Bradley, ARNTSB FTW70FPG29Accident · No injuriesClosedGrumman G-164 · Forrest City, ARNTSB MIA70FKT20Accident · No injuriesClosedAero Comdr A9B · Labelle, FLNTSB DEN70DXD43Accident · No injuriesClosedCallair A-4 · Pierce, CONTSB OAK70DJA07Accident · No injuriesClosedBoeing E75 · Waipahu, HINTSB LAX70FUG32Accident · No injuriesClosedHughes 269B · Riverside, CANTSB CHI70DBA23Accident · No injuriesClosedCessna 150 · Patriot, INNTSB FTW70FPM08Accident · Minor injuriesClosedBoeing E75N1 · Wetumka, OKNTSB DEN70AD055Accident · 1 fatalClosedChampion 7GCBC · Colorado Sps, CONTSB FTW70FPD11Accident · No injuriesClosedPiper PA-25 · Eastland, TXNTSB FTW70FPG28Accident · Serious injuriesClosedKaman H-43A · Mountain View, ARNTSB MIA70DLD25Accident · Minor injuriesClosedPiper PA-25 · Arcadia, FLNTSB SEA70AS040Accident · 2 fatalClosedAeronca 7AC · Woodinville, WANTSB FTW70FRD14Accident · Minor injuriesClosedGrumman G-164A · Iota, LANTSB FTW70FRA16Accident · 1 fatalClosedBoeing E75N1 · Dayton, TXNTSB SEA70FVQ04Accident · Minor injuriesClosedPiper PA-25 · Harrisburg, ORNTSB MIA70FKQ07Accident · No injuriesClosedCallair A9B · Fitler, MSNTSB DEN70DXA10Accident · No injuriesClosedChampion 7ECA · Newcastle, WYNTSB OAK70FVG11Accident · Minor injuriesClosedPiper PA-18A · Glenn, CANTSB FTW70DRA14Accident · No injuriesClosedGrumman G-164 · Victoria, TXNTSB SEA70DWA14Accident · No injuriesClosedBell 47G3B1 · Cove, ORNTSB OAK70DVG28Accident · Minor injuriesClosedCessna 140 · Moskwite Cr, CANTSB FTW70FRA15Accident · 1 fatalClosedBoeing E75 · Deweyville, TXNTSB FTW70AF071Accident · 1 fatalClosedCessna 150G · Grove, OKNTSB CHI70FBD30Accident · No injuriesClosedPiper PA-28 · Ottawa, ILNTSB DEN70AD053Accident · 2 fatalClosedPiper PA-18 · Littleton, CONTSB ANC70AA074Accident · Serious injuriesClosedBell 205A · Fairbanks, AKNTSB FTW70DPJ14Accident · Serious injuriesClosedChampion 7AC · Hough, OKNTSB FTW70FPG18Accident · 1 fatalClosedPiper J3C · Roe, ARNTSB MKC70FCJ20Accident · 1 fatalClosedAero Comdr A-9B · Aurora, NENTSB FTW70FPG20Accident · Minor injuriesClosedBoeing E75 · Hunter, ARNTSB FTW70FPJ13Accident · 1 fatalClosedPiper PA-25 · Cushing, OKNTSB LAX70AL064Accident · 2 fatalClosedChampion 7ECA · Chula Vista, CANTSB FTW70DQG10Accident · No injuriesClosedBoeing E75 · Bovina, TXNTSB OAK70DVG07Accident · No injuriesClosedBoeing E-75 · Willows, CA