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 SEA76DYE45Accident · Serious injuriesClosedAerospatle SE3133 · Clearwater, WANTSB FTW76FPG68Accident · Serious injuriesClosedBell 47B · Ravenden, ARNTSB MKC76FCJ41Accident · Minor injuriesClosedHiller Acft UH-12D · North Platte, NENTSB LAX76FUQ42Accident · 1 fatalClosedN. American P-51 · Mojave, CANTSB SEA76DYC58Accident · Serious injuriesClosedBell 47G-4A · Lostine, ORNTSB FTW76AF102Accident · 1 fatalClosedChampion 7KCAB · Goldsby, OKNTSB SEA76FYC57Accident · Minor injuriesClosedCessna A188A · Moiser, ORNTSB MKC76DTG17Accident · No injuriesClosedCessna 185 · Devils Lake, NDNTSB MKC76DER71Accident · No injuriesClosedPiper PA-25 · Herman, MNNTSB MKC76FCJ40Accident · No injuriesClosedCallair A-9 · Central City, NENTSB MKC76FTK28Accident · Minor injuriesClosedPiper PA-25 · Sturgis, SDNTSB MKC76DCQ58Accident · Minor injuriesClosedAero-Comdr 600S2R · Tribune, KSNTSB MIA76DKG78Accident · No injuriesClosedGrumman G-164A · Adel, GANTSB FTW76FPG67Accident · Minor injuriesClosedGrumman G-164A · Turrell, ARNTSB DEN76AD053Accident · 1 fatalClosedPiper PA-23 · Cheyenne, WYNTSB SEA76DYA26Accident · No injuriesClosedHiller Acft UH-12E · Rupert, IDNTSB FTW76FRD52Accident · No injuriesClosedBell 47G-5 · Walker, LANTSB FTW76AF100Accident · 1 fatalClosedPiper J3C · Fordyce, ARNTSB SEA76FYG53Accident · Minor injuriesClosedBell 47G-2 · Eltopia, WANTSB SEA76FTA25Accident · No injuriesClosedPiper PA-25 · Forsyth, MTNTSB MKC76FCQ56Accident · 1 fatalClosedPiper PA-25 · Dighton, KSNTSB NYC76AN104Accident · Minor injuriesClosedEnstrom F-28A · Island Beach, NJNTSB MIA76FKQ35Accident · No injuriesClosedCessna A188B · Shelby, MSNTSB MIA76FKJ69Accident · No injuriesClosedPiper PA-25 · Dothan, ALNTSB FTW76DPG66Accident · Minor injuriesClosedCessna A188B · Fisher, ARNTSB OAK76DVA76Accident · No injuriesClosedAero Comdr 600S2C · Riverdale, CANTSB MIA76DKJ68Accident · Minor injuriesClosedGrumman G-164 · Perdido Beach, ALNTSB CHI76FEK18Accident · Serious injuriesClosedPiper PA-25 · Vanlue, OHNTSB MKC76FCD47Accident · No injuriesClosedHiller Acft UH-12D · Dallas Center, IANTSB FTW76AF098Accident · 2 fatalClosedLuscombe 8A · Cabot, ARNTSB SEA76DYA25Accident · No injuriesClosedGrumman G-164A · Hamer, IDNTSB SEA76DYG35Accident · No injuriesClosedBoeing B75N1 · Nezperce, IDNTSB NYC76DHD29Accident · No injuriesClosedBreezy JCK-1 · Bridgeport, NJNTSB MKC76DCQ57Accident · No injuriesClosedBell 47D-1 · Sublette, KSNTSB FTW76DPD45Accident · No injuriesClosedCessna 188 · Bowie, TXNTSB MKC76FER67Accident · Minor injuriesClosedCessna 188B · Lesueur, MNNTSB MKC76DCJ39Accident · Serious injuriesClosedAero-Comdr A-9B · Bridgeport, NENTSB FTW76DRA47Accident · No injuriesClosedBoeing A75 · Fresno, TXNTSB ANC76AA094Accident · No injuriesClosedBell 206B · Coldfoot, AKNTSB OAK76FVA67Accident · 1 fatalClosedPiper PA-18 · Stratford, CANTSB FTW76DRA46Accident · No injuriesClosedCessna A188 · Palacios, TXNTSB DEN76FTM31Accident · Serious injuriesClosedGrumman G-164 · Morgan, UTNTSB CHI76FEM14Accident · No injuriesClosedCallair A-9 · Hart, MINTSB OAK76DJA16Accident · No injuriesClosedMurrayair MA-1 · Honokaa, HINTSB IAD76FIG16Accident · Minor injuriesClosedHughes 269B · Gaithersburgh, MDNTSB MKC76FCD46Accident · No injuriesClosedPiper PA-28 · New Vienna, IANTSB FTW76FQG75Accident · 1 fatalClosedSkybolt JJ-1 · Canyon, TXNTSB FTW76DPG62Accident · No injuriesClosedGrumman G-164A · Ulm, ARNTSB MIA76DKG67Accident · No injuriesClosedPiper PA-25 · Estel, GANTSB FTW76FPG55Accident · Serious injuriesClosedCessna 188B · Gibson Switch, AR