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 SEA7LFYE02Accident · Minor injuriesClosedHughes 369HS · Elma, WANTSB MIA76FKQ01Accident · No injuriesClosedHughes 269C · Columbus, MSNTSB SEA76DYG01Accident · Minor injuriesClosedBell 47G-2 · Moses Lake, WANTSB MKC75DCJ62Accident · No injuriesClosedPiper PA-18A · Danbury, NENTSB MKC75DCA36Accident · Minor injuriesClosedGrumman G-164A · Dudley, MONTSB SEA75DYG47Accident · No injuriesClosedGrumman G-164A · Deary, IDNTSB SEA75DYA51Accident · No injuriesClosedCallair A-9 · Glenns Ferry, IDNTSB IAD75FLQ25Accident · Serious injuriesClosedCessna 170A · California, KYNTSB FTW75DPD51Accident · Minor injuriesClosedCessna 150G · Munday, TXNTSB CHI75FEM49Accident · Minor injuriesClosedGrumman FM-2 · South Haven, MINTSB DEN75FTM20Accident · Minor injuriesClosedPiper PA-25 · West Jordan, UTNTSB OAK75FVG79Accident · 1 fatalClosedTomcat MK 5A · Gridley, CANTSB FTW75FQG60Accident · 1 fatalClosedCessna A188 · Dimmitt, TXNTSB MKC75FCQ57Accident · 1 fatalClosedPiper PA-25 · Greensburg, KSNTSB MKC75DCQ56Accident · No injuriesClosedBoeing A75N1 · Stafford, KSNTSB FTW75DPM20Accident · No injuriesClosedBoeing A75 · Allen, OKNTSB SEA75DYA52Accident · No injuriesClosedEnstrom F-28A1 · Boise, IDNTSB MKC75DER77Accident · No injuriesClosedPiper PA-25 · Minnesota Lake, MNNTSB SEA75AYI28Accident · Serious injuriesClosedBoeing A75N1 · Malin, ORNTSB OAK75FXQ48Accident · No injuriesClosedCessna 150 · Silver Springs, CANTSB NYC75DFJ28Accident · No injuriesClosedBell 47D1 · Fulton, NYNTSB MKC75FTG25Accident · No injuriesClosedPiper PA-18 · Fessenden, NDNTSB LAX75FVA73Accident · 1 fatalClosedGrumman G-164A · Taft, CANTSB SEA75DYG49Accident · Minor injuriesClosedGrumman G-164 · Dayton, WANTSB OAK75DVA70Accident · No injuriesClosedHiller Acft UH-12E · Merced, CANTSB IAD75DLJ32Accident · Serious injuriesClosedPiper PA-25 · Edenton, NCNTSB CHI75FEK32Accident · No injuriesClosedBell 47G2 · Paulding, OHNTSB NYC75FKG79Accident · No injuriesClosedHughes 269A · Brooklet, GANTSB MKC75FCD46Accident · No injuriesClosedHiller Acft H-23D · Nevada, IANTSB FTW75DRG91Accident · No injuriesClosedSnow 600S2R · La Feria, TXNTSB FTW75FQG59Accident · 1 fatalClosedPiper PA-25 · Hereford, TXNTSB SEA75DYC42Accident · No injuriesClosedHiller Acft UH-12D · Manzanita, ORNTSB IAD75FHD53Accident · Serious injuriesClosedVolmer VJ22 · Milton, DENTSB SEA75AS044Accident · 1 fatalClosedAmer Avco AA1-A · Portland, ORNTSB MKC75DER75Accident · No injuriesClosedPiper PA-25 · Hector, MNNTSB FTW75FPG82Accident · Serious injuriesClosedCessna 150 · No.Little Rock, ARNTSB DEN75DTC26Accident · Minor injuriesClosedPiper PA-18 · Gillette, WYNTSB LAX75AL065Accident · 1 fatalClosedLuscombe 8A · Taft, CANTSB FTW75DPG86Accident · No injuriesClosedGrumman G-164 · Swifton, ARNTSB MKC75FCJ59Accident · Minor injuriesClosedCarson Rell 47G · Oakdale, NENTSB IAD75AI064Accident · 1 fatalClosedBeech 23 · Kenly, NCNTSB FTW75FRD66Accident · No injuriesClosedEmair MA-1 · Oberlin, LANTSB SEA76DYG41Accident · No injuriesClosedLuscombe 8A · Lyons Ferry, WANTSB SEA75FYA48Accident · No injuriesClosedHelicom Comutr · Arco, IDNTSB OAK75DXQ46Accident · Minor injuriesClosedBeech 35 · Elko, NVNTSB NYC75AN116Accident · 1 fatalClosedN.American F-51D · Edgartown, MANTSB MIA75FLG41Accident · Serious injuriesClosedHughes 269A · Reidville, SCNTSB MKC75DTG23Accident · Minor injuriesClosedPiper PA-25 · Manvel, NDNTSB MIA7KAM086Accident · 1 fatalClosedGrum Amer AA-5 · Fajardo, PRNTSB IAD75FIG21Accident · Minor injuriesClosedChampion 7ECA · Lantz, MD