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 MKC76AK079Accident · 2 fatalClosedAeronca 11AC · Hastings, MNNTSB FTW76FPA36Accident · Serious injuriesClosedCessna 310B · Prosper, TXNTSB FTW76FRJ44Accident · 1 fatalClosedPiper PA-25 · W.Monroe, LANTSB MIA76DLD85Accident · No injuriesClosedGrumman G-164A · Bushnell, FLNTSB GAF76DVA85Accident · No injuriesClosedPiper PA-25 · Delano, CANTSB LAX76DUK07Accident · No injuriesClosedCessna 188 · Poston, AZNTSB MIA76FKT94Accident · No injuriesClosedSikorsky S58E · Ft Lauderdale, FLNTSB MIA76DKH04Accident · Minor injuriesClosedCessna 188B · Quitman, GANTSB FTW76FPD54Accident · 1 fatalClosedCassutt Iiim · Jonesboro, TXNTSB MIA76FKJ97Accident · 1 fatalClosedAero-Comdr 600S2R · Ashland, ALNTSB FTW77AF118Accident · 2 fatalClosedBoeing A75 · Stroud, OKNTSB OAK76FVA84Accident · 1 fatalClosedStarduster SA100 · Fresno, CANTSB OAK76DVD52Accident · No injuriesClosedCessna 188B · Tracy, CANTSB IAD76FLJ34Accident · No injuriesClosedPiper PA-18A · Lagrange, NCNTSB FTW76DPH04Accident · Serious injuriesClosedPiper J-3 · Lakevillage, ARNTSB MIA76FKQ45Accident · No injuriesClosedGrumman G-164A · Flora, MSNTSB MIA76FKG99Accident · Minor injuriesClosedPiper PA-25 · Albany, GANTSB IAD76AI095Accident · 1 fatalClosedPiper PA-22 · Mooresville, NCNTSB FTW76FQH02Accident · No injuriesClosedPiper PA-36 · Roby, TXNTSB MKC76FER91Accident · No injuriesClosedPiper PA-36 · Delavan, MNNTSB FTW76AF117Accident · 2 fatalClosedCessna 150 · Pflugerville, TXNTSB MIA76AM105Accident · 1 fatalClosedPiper PA-23 · Clarksdale, MSNTSB FTW76DRD62Accident · Minor injuriesClosedPiper J-3 · Lake Charles, LANTSB FTW76DPH02Accident · No injuriesClosedGrumman G-164 · Stuttgart, ARNTSB DEN76FTM47Accident · No injuriesClosedGrumman G-164A · Leland, UTNTSB FTW76DRG85Accident · Minor injuriesClosedBucker BU-133 · Cibolo, TXNTSB FTW76DPA34Accident · No injuriesClosedPiper J3C · Caddo Mills, TXNTSB MKC76DCA43Accident · No injuriesClosedCessna A188B · Portageville, MONTSB OAK76FVA82Accident · No injuriesClosedBoeing A75 · Chowchilla, CANTSB MIA76DKJ94Accident · No injuriesClosedBoeing A75N1 · Headland.Al, ALNTSB ANC76DAH47Accident · Minor injuriesClosedAeronca 7AC · Palmer, AKNTSB FTW76DPH01Accident · No injuriesClosedAero Comdr 600S2R · Eudora, ARNTSB FTW76AF114Accident · 2 fatalClosedBellanca 8KCAB · Amarillo, TXNTSB NYC76FGT27Accident · No injuriesClosedBell 47D1 · Zion Grove, PANTSB MIA76DLG47Accident · No injuriesClosedCessna 188 · Sumter, SCNTSB CHI76FEC55Accident · No injuriesClosedGrumman G-164A · Sandusky, MINTSB MIA76FKG96Accident · No injuriesClosedBoeing B-17G · Cordele, GANTSB IAD76FLJ33Accident · No injuriesClosedCessna 172 · Apex, NCNTSB FTW76DRJ42Accident · No injuriesClosedGrumman G-164A · Lake Providnce, LANTSB CHI76FEI43Accident · No injuriesClosedEL Tomcat Mark V · Mantua, OHNTSB FTW76FPG97Accident · Serious injuriesClosedPiper PA-25 · Altheimer, ARNTSB DEN76AD065Accident · 2 fatalClosedPiper PA-28R · Melrose, NMNTSB MIA76FKJ92Accident · 1 fatalClosedPiper PA-25 · Flomaton, ALNTSB FTW76FQG94Accident · Serious injuriesClosedBellanca 8KCAB · Acuff, TXNTSB LAX76DUJ01Accident · No injuriesClosedNaval Fcty N3N-3 · Tempe, AZNTSB SEA76DYC66Accident · No injuriesClosedBell 47G3B2 · Vancouver, WANTSB MIA76FKJ93Accident · No injuriesClosedCessna 188 · Geneva, ALNTSB FTW76DQG90Accident · No injuriesClosedPiper PA-25 · Spearman, TXNTSB CHI76FET46Accident · No injuriesClosedCessna A188B · Poneto, INNTSB SEA76DYG73Accident · Minor injuriesClosedHiller Acft UH-12E · Kennewick, WA