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 LAX75DUJ30Accident · Serious injuriesClosedCessna 188 · Gadson, AZNTSB FTW75FRG20Accident · Minor injuriesClosedPiper PA-18 · La Vernia, TXNTSB SEA75FYI10Accident · No injuriesClosedBoeing A75N1 · Wilbur, ORNTSB FTW75AF023Accident · 1 fatalClosedCessna 150L · Weldon, TXNTSB SEA75DYA22Accident · No injuriesClosedPiper PA-12 · Mccall, IDNTSB IAD75DLQ07Accident · Minor injuriesClosedBoeing A75-N1 · Union City, TNNTSB FTW75AF022Accident · 2 fatalClosedCessna 150L · Parkin, ARNTSB OAK75DVG23Accident · Serious injuriesClosedBoeing A75N1 · Colusa, CANTSB MIA75FKQ14Accident · Serious injuriesClosedCessna 188A · Anguilla, MSNTSB LAX75FUJ33Accident · Serious injuriesClosedCessna 182 · Phoenix, AZNTSB MKC75AK021Accident · 1 fatalClosedCessna 182J · Gordon, NENTSB IAD75FKW06Accident · 1 fatalClosedCessna 172 · Twinton, TNNTSB NYC75FFJ11Accident · Serious injuriesClosedHughes 269A · Groveland, NYNTSB SEA75DYG12Accident · No injuriesClosedBell 47G-2 · Ruff, WANTSB MIA75DKG28Accident · No injuriesClosedBreezy DP2 · Claxton, GANTSB IAD75FLJ08Accident · No injuriesClosedCessna A188 · Pollocksville, NCNTSB FTW75FQG22Accident · Serious injuriesClosedPiper PA-25 · Muleshoe, TXNTSB MIA74AM020Accident · 1 fatalClosedPiper PA-28 · Jacksonville, FLNTSB NYC75AN033Accident · 1 fatalClosedBellanca 8KCAB · S Weymouth, MANTSB LAX74FUG09Accident · 1 fatalClosedPitts SPL S-1C · Highgrove, CANTSB CHI75FCA02Accident · Serious injuriesClosedBaby Great Lakes · Columbia, ILNTSB CHI75DEP24Accident · No injuriesClosedBoeing A75 · Lone Rock, WINTSB OAK75FX022Accident · 1 fatalClosedBensen B-8M · Reno, NVNTSB MKC75FCD16Case · No injuriesClosedGrumman G-164 · Alexander, IANTSB ANC75FAG29Accident · Serious injuriesClosedMaule M-4 · Seldovia, AKNTSB FTW75FQG21Accident · No injuriesClosedCallair A-9 · Amarillo, TXNTSB IAD75FLT03Accident · Serious injuriesClosedPiper PA-25 · Germantown, TNNTSB IAD75FLJ10Accident · No injuriesClosedBoeing A75-N1 · Grantham, NCNTSB IAD75AI009Accident · 2 fatalClosedBoeing A75L3 · Waynesville, NCNTSB CHI75FEP19Accident · 1 fatalClosedBoeing A75N1 · Plover, WINTSB CHI75DEA10Accident · No injuriesClosedHiller Acft OH-23B · Depauw, INNTSB OAK75FVD10Accident · 1 fatalClosedGrumman F7F-3 · Ukiah, CANTSB FTW75FPM04Accident · Minor injuriesClosedCessna A188B · Atoka, OKNTSB MIA75DKG29Accident · Minor injuriesClosedHughes 269B · Alma, GANTSB OAK75DVD08Accident · No injuriesClosedNaval Fcty N3N-3 · Tracy, CANTSB MKC75FCQ13Accident · Minor injuriesClosedGrumman G-164 · Valley Ctr, KSNTSB MIA75FKQ10Accident · 1 fatalClosedBoeing B75 · Eagle Lake, MSNTSB MIA74FKQ11Accident · No injuriesClosedAero Comdr 600S2R · Onward, MSNTSB MKC75FCD13Accident · No injuriesClosedCallair A-9 · Gilmore City, IANTSB OAK75FVG20Accident · Serious injuriesClosedChampion 7EC · Vina, CANTSB MKC75FCD11Accident · 1 fatalClosedPiper PA-11 · Rockwell Cty, IANTSB LAX75DUJ22Accident · No injuriesClosedGrumman G-164A · Buckeye, AZNTSB MIA75DKG23Accident · Minor injuriesClosedAero Comdr A-9B · Whigham, GANTSB FTW75DRJ10Accident · Serious injuriesClosedPiper PA-25 · Lecompte, LANTSB ANC75AA014Accident · Serious injuriesClosedCessna 180H · Cook Inlet, AKNTSB FTW75DRJ11Accident · Serious injuriesClosedPiper PA-25 · Vidalia, LANTSB NYC74FGT07Accident · No injuriesClosedBell 47G · Orangeville, PANTSB MKC75FCD10Accident · 1 fatalClosedPiper PA-18 · Paton, IANTSB MKC75FCJ21Accident · No injuriesClosedCallair A-9 · Brewster, NENTSB MIA75FKG19Accident · Minor injuriesClosedBoeing A75N1 · Blakely, GA