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 CHI73DEP66Accident · Minor injuriesClosedBell 47G-5 · Appleton, WINTSB MIA73FKJ71Accident · Serious injuriesClosedRyan ST-3KR · Wetumpka, ALNTSB SEA74DYI04Accident · No injuriesClosedPiper PA-25 · Burns, ORNTSB MKC73FTK18Accident · No injuriesClosedPiper PA-25 · Gettysburg, SDNTSB SEA73FYC37Accident · Serious injuriesClosedBell 47G-3B · Warm Springs, ORNTSB MIA73DKJ70Accident · Minor injuriesClosedCessna 188 · Florence, ALNTSB FTW73DPG62Accident · No injuriesClosedCessna A188B · Tucker, ARNTSB DEN73FTM33Accident · Serious injuriesClosedCessna 188 · Farmington, UTNTSB FTW73FRA38Accident · No injuriesClosedGrumman G-164A · Bay City, TXNTSB OAK73FVM35Accident · 2 fatalClosedHazard-Turn T-40H · Gonzales, CANTSB MIA73OM112Accident · No injuriesClosedCessna 172 · Hope Bay, Burkina FasoNTSB MIA73DLA46Accident · No injuriesClosedBell 47G-5 · Newberry, FLNTSB OAK73DVD45Accident · No injuriesClosedCessna 180 · Cloverdale, CANTSB MKC73FCG49Accident · Serious injuriesClosedAeronca L-3 · Branson, MONTSB CHI73AC009Accident · 1 fatalClosedN. American SNJ-5 · Shelby, OHNTSB OAK73FVG68Accident · Serious injuriesClosedPiper PA-25 · Madison, CANTSB MIA73AM110Accident · 1 fatalClosedCessna 150L · Key West, FLNTSB IAD73DLJ34Accident · No injuriesClosedHughes 269B · Lumberton, NCNTSB FTW73FRJ40Accident · 1 fatalClosedPiper PA-25 · Monroe, LANTSB DEN73FTC29Accident · Serious injuriesClosedSnow S2C · Sheridan, WYNTSB OAK73FXQ37Accident · Minor injuriesClosedPiper PA-25 · Ely, NVNTSB MIA73FKG79Accident · 1 fatalClosedPiper PA-25 · Pineview, GANTSB FTW73AF073Accident · 2 fatalClosedPiper PA-18 · Quemado, TXNTSB FTW73DQG41Accident · No injuriesClosedBoeing A75N1 · Guthrie, TXNTSB MIA73RM108Accident · 1 fatalClosedPiper PA-23 · Staniel Cay, Burkina FasoNTSB DEN73FTC28Accident · No injuriesClosedHughes 269A · Baggs, WYNTSB MIA73AM107Accident · 1 fatalClosedChampion 7GCAA · Walls, MSNTSB OAK73FVG66Accident · Serious injuriesClosedPiper PA-25 · Tulelake, CANTSB OAK73FVG65Accident · 2 fatalClosedN.American F-51D · Clearlk Oak, CANTSB OAK73DVA62Accident · No injuriesClosedBell 47G-2 · Kettlmn Cty, CANTSB FTW73DPG61Accident · No injuriesClosedGrumman G-164A · Wynne, ARNTSB MKC73DTG20Accident · No injuriesClosedPiper PA-18 · Minto, NDNTSB CHI73DEA35Accident · No injuriesClosedCessna A188A · Greentown, INNTSB IAD73FIJ25Accident · 1 fatalClosedBell 47G2A1 · Stickney, WVNTSB FTW73FQG42Accident · 1 fatalClosedPiper PA-25 · Olton, TXNTSB FTW73FPM15Accident · 1 fatalClosedPiper PA-18A · Welch, OKNTSB SEA73DYI16Accident · No injuriesClosedBoeing A75 · Marlin, ORNTSB MKC73DCJ45Accident · No injuriesClosedPiper PA-25 · North Loup, NENTSB IAD73FLJ35Accident · No injuriesClosedMooney M20E · Evergreen, NCNTSB OAK73DVA63Accident · Minor injuriesClosedBoeing A75N1 · Kingsburg, CANTSB MKC73FCA28Accident · No injuriesClosedBell 47D1 · Dorena, MONTSB MKC73DCJ47Accident · Minor injuriesClosedPiper PA-25 · Stamford, NENTSB LAX73FUM34Accident · Serious injuriesClosedFairchild M-62 · Calexico, CANTSB OAK73AP043Accident · 1 fatalClosedAmer Avco AA1-B · Fairfield, CANTSB NYC73DNG75Accident · No injuriesClosedGrumman TBM-3E · Fort Kent, MENTSB MKC73FTK14Accident · Serious injuriesClosedAero Comdr 600S2R · Pierre, SDNTSB MKC73FCD68Accident · No injuriesClosedBell 47G-3B · Clarinda, IANTSB MIA73FKQ29Accident · No injuriesClosedGrumman G-164A · Minter City, MSNTSB FTW73DRD35Accident · No injuriesClosedGrumman G-164A · Abbeville, LANTSB FTW73DPG60Accident · No injuriesClosedPiper PA-25 · Parkin, AR