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 DEN75AD035Accident · 1 fatalClosedCessna 182B · Naturita, CONTSB MIA75FKT36Accident · 1 fatalClosedBoeing B75N1 · Florida City, FLNTSB NYC75FHM13Accident · Minor injuriesClosedAvion Mudry CAP10B · Verbank, NYNTSB CHI75AC045Accident · 2 fatalClosedPiper PA-11 · Brunswick, OHNTSB MIA75AM036Accident · 1 fatalClosedAeronca 7BCM · Senatobia, MSNTSB SEA75AS024Accident · 1 fatalClosedCessna 120 · Wasco, ORNTSB IAD75FLT06Accident · No injuriesClosedCessna 150 · Brunswick, TNNTSB CHI75AC044Accident · 1 fatalClosedCessna 150J · Utica, MINTSB MIA75FLD40Accident · Minor injuriesClosedSikorsky H-19C · Okahumpka, FLNTSB FTW75FRG48Accident · Serious injuriesClosedBell 47GB31 · Freer, TXNTSB CHI75FET12Accident · No injuriesClosedCessna 120 · Sodus, MINTSB OAK75AP020Accident · 1 fatalClosedCessna 170B · Santa Cruz, CANTSB FTW75FPJ13Accident · Minor injuriesClosedTaylorcraft BL · Poolville, OKNTSB IAD75AI032Accident · 2 fatalClosedCessna 150J · Morganton, NCNTSB LAX75DUM10Accident · No injuriesClosedCessna 150 · Banner, CANTSB FTW75FPJ11Accident · Serious injuriesClosedPiper J-3 · Fairview, OKNTSB LAX75DUM09Accident · No injuriesClosedBoeing A75 · Holtville, CANTSB OAK75DVG35Accident · No injuriesClosedBoeing A75 · Woodland, CANTSB FTW75FQG30Accident · Serious injuriesClosedCessna A188 · Pampa, TXNTSB SEA75FYE24Accident · 1 fatalClosedBell 205-A1 · Marblemount, WANTSB OAK75DVG34Accident · Minor injuriesClosedBoeing PT-17 · Elk Creek, CANTSB SEA75FYE23Accident · No injuriesClosedCessna 172 · Seattle, WANTSB FTW75DRG34Accident · Serious injuriesClosedPiper PA-25 · Pharr, TXNTSB LAX75DUM06Accident · No injuriesClosedStearman A75 · Imperial, CANTSB MIA75FLD25Accident · 1 fatalClosedAero Cmdr A-9B · Bartow, FLNTSB MIA75DLD28Accident · No injuriesClosedBell 47G21A · Waverly, FLNTSB IAD75AIJ11Accident · No injuriesClosedCessna 172 · Hazelgreen, WVNTSB CHI75FET09Accident · 1 fatalClosedSidewinder Smyth · Huntington, INNTSB MIA75FKQ19Accident · Minor injuriesClosedBoeing A75 · Merigold, MSNTSB FTW75FPG26Accident · 1 fatalClosedGrumman G-164A · Lake Village, ARNTSB LAX75FUQ14Accident · Serious injuriesClosedBell 47G3B2 · Camarillo, CANTSB LAX75DUJ36Accident · No injuriesClosedGrumman G-164A · Roll, AZNTSB NYC75FHD24Accident · No injuriesClosedChampion 7KCAB · Bridgeport, NYNTSB MKC75FCA11Accident · 1 fatalClosedCallair A-9 · Charleston, MONTSB FTW75DPG23Accident · No injuriesClosedPiper PA-25 · Cornerstone, ARNTSB IAD75AI021Accident · 1 fatalClosedBoeing 75 · Somerville, TNNTSB CHI75FEI20Accident · Minor injuriesClosedHughes 369HS · Bosworth, OHNTSB CHI75FEA11Accident · Serious injuriesClosedBellanca 8KCAB · New Castle, INNTSB FTW75DQG31Accident · No injuriesClosedPiper PA-25 · Roarng Sprngs, TXNTSB FTW75DPD11Accident · Serious injuriesClosedTaylorcraft BC12-D · Justin, TXNTSB OAK75DVA23Accident · No injuriesClosedPiper PA-25 · Corcoran, CANTSB IAD75AI018Accident · 1 fatalClosedPiper PA-22 · Huntington, WVNTSB LAX75DUJ34Accident · No injuriesClosedGrumman G-164 · Aguila, AZNTSB CHI75FET08Accident · 1 fatalClosedBensen B-8M · Roanoke, INNTSB MIA75DKQ17Accident · No injuriesClosedGrumman G-164 · Cleveland, MSNTSB CHI75FEM14Accident · 1 fatalClosedPiper PA-25 · Wayland, MINTSB ANC75AA030Accident · 6 fatalClosedVolpar 18 · Lupine, AKNTSB FTW75DPG27Accident · Serious injuriesClosedBoeing A75 · Roe, ARNTSB FTW75DRJ15Accident · Serious injuriesClosedCessna A188B · Simmesport, LANTSB SEA75DYC17Accident · Minor injuriesClosedPiper PA-18A · Friend, OR