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 OAK76FXQ15Accident · 1 fatalClosedStearman PT-17 · Reno, NVNTSB MKC76FCD13Accident · Minor injuriesClosedHiller Acft H-23D · Lakewood, IANTSB MIA76FLD16Accident · Minor injuriesClosedSikorsky CH19E · Cosme, FLNTSB DEN76DTE25Accident · No injuriesClosedCessna A188B · Monte Vista, CONTSB MIA76FLA11Accident · No injuriesClosedEmair MA-1 · Altha, FLNTSB LAX76DUJ29Accident · No injuriesClosedBell 47G-5 · Chandler, AZNTSB CHI76AC023Accident · 2 fatalClosedPiper PA-22 · Cataract, WINTSB ANC76AA034Accident · No injuriesClosedBell 212 · Valdez, AKNTSB MIA76FKQ13Accident · 1 fatalClosedGrumman G164A · Clarksdale, MSNTSB FTW76FQD06Accident · No injuriesClosedWaco UPF-7 · El Paso, TXNTSB FTW76DQG21Accident · No injuriesClosedPiper PA-25 · Tahoka, TXNTSB SEA76DYG12Accident · No injuriesClosedCessna 188 · Monitor, WANTSB MKC76AK019Accident · 2 fatalClosedPiper PA-18 · Hayes, SDNTSB MIA76FLA10Accident · No injuriesClosedMurrayair MA-1 · Marianna, FLNTSB OAK7LDVD10Accident · Minor injuriesClosedBell 205A-1 · Byron, CANTSB MKC76FCD12Accident · No injuriesClosedPiper PA-25 · Lenox, IANTSB LAX76AL016Accident · 1 fatalClosedCessna 150 · Etiwanda, CANTSB MKC76FCD08Accident · No injuriesClosedCessna A188 · Onawa, IANTSB MIA76FKG20Accident · No injuriesClosedBellanca 8GCBC · Waynesboro, GANTSB OAK76DVM14Accident · Minor injuriesClosedScorpion TWO · San Martin, CANTSB MIA75ALG15Accident · Minor injuriesClosedCessna 188B · Barnwell, SCNTSB MKC76FCD07Accident · Minor injuriesClosedBell H-13E · Collins, IANTSB MIA76FKQ12Accident · No injuriesClosedCessna A188B · Edwards, MSNTSB IAD76FID07Accident · No injuriesClosedPiper PA-25 · Virginia Beach, VANTSB FTW76FPJ10Accident · 1 fatalClosedBoeing E75 · Fort Cobb, OKNTSB FTW76AQG22Accident · No injuriesClosedPiper PA-25 · Slaton, TXNTSB OAK76DVG19Accident · No injuriesClosedCessna A188A · Herald, CANTSB OAK76FJA02Accident · 1 fatalClosedBoeing A75N1 · Koloa, HINTSB MKC76FCD06Accident · No injuriesClosedAero Comdr A-9 · Sac City, IANTSB OAK76FVA08Accident · Serious injuriesClosedCessna A188 · Lemoore, CANTSB MIA76FLG13Accident · Minor injuriesClosedBell 47G-2 · Elliott, SCNTSB FTW76DPG19Accident · No injuriesClosedPiper PA-25 · Joiner, ARNTSB OAK76DVG16Accident · No injuriesClosedBell 47G · Gold Run, CANTSB MKC76FER22Accident · No injuriesClosedPiper PA-28 · Staples, MNNTSB CHI76FEE15Accident · Serious injuriesClosedBenson B8M · Ringwood, ILNTSB CHI76AC016Accident · 1 fatalClosedTaylorcraft BC12-D · Circleville, OHNTSB NYC76AN027Accident · 1 fatalClosedCessna 170B · Indian Lake, NYNTSB MKC76FCQ12Accident · No injuriesClosedBell 47G3B1 · Ingalls, KSNTSB MKC76DCJ11Accident · No injuriesClosedCessna 188 · Winnebago, NENTSB MKC76FCG18Accident · Minor injuriesClosedMeek DSM-1 · Lyndon, KSNTSB FTW76FPD07Accident · No injuriesClosedCessna A188 · De Leon, TXNTSB MIA76DLA08Accident · No injuriesClosedBell 47D1 · Monticello, FLNTSB NYC76FFJ03Accident · Minor injuriesClosedHughes 269B · Mumford, NYNTSB MIA76FKG14Accident · No injuriesClosedCessna 188 · Hawkinsville, GANTSB CHI76FEK05Accident · 1 fatalClosedBaby Ace D-C · Warsaw, OHNTSB MIA76FKG12Accident · No injuriesClosedPiper PA-25 · Oglethorpe, GANTSB CHI76FEM07Accident · Minor injuriesClosedCessna 150G · Nunica, MINTSB LAX76AL012Accident · 1 fatalClosedPiper PA-18 · Tacoma, WANTSB LAX7LFUJ11Accident · Serious injuriesClosedCessna 172 · Payson, AZNTSB LAX76DUJ13Accident · Minor injuriesClosedNaval Fcty N3N-1 · Mesa, AZ