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 MIA79DLD18Accident · No injuriesClosedCessna 152 · Silver Springs, FLNTSB MIA79DKJ12Accident · No injuriesClosedAeronca 7AC · Opp, ALNTSB LAX79DUJ18Accident · No injuriesClosedBell 47G-5 · Yuma, AZNTSB CHI79DEE12Accident · No injuriesClosedGrumman AA-5A · Morris, ILNTSB DEN79FTC03Accident · No injuriesClosedBellanca 7GCBC · Laramie, WYNTSB MIA79DKT26Accident · No injuriesClosedGrumman G-164A · Belle Glade, FLNTSB SEA79FA011Accident · 3 fatalClosedCessna 185 · Joseph, ORNTSB FTW79FA009Accident · 2 fatalClosedAeronca 7EC · Richmond, LANTSB OAK79FA007Accident · 2 fatalClosedBellanca 7ECA · San Jose, CANTSB OAK78FA051Accident · 2 fatalClosedBellanca 8KCAB · Truckee, CANTSB NYC79FFJ03Accident · Minor injuriesClosedGrumman G-164B · Wolcott, NYNTSB FTW79FRD06Accident · Serious injuriesClosedPitts S-2A · Abbeville, LANTSB FTW79DA008Accident · 1 fatalClosedMooney M18LA · Wilson, TXNTSB MIA79FKJ09Accident · 1 fatalClosedAmateur Mini · Bessemer, ALNTSB IAD79FKW01Accident · 2 fatalClosedCessna 150G · Evensville, TNNTSB IAD79FA006Accident · 1 fatalClosedCessna 120 · Covington, TNNTSB LAX79IA008Incident · No injuriesClosedSaberliner NA-265 · Los Angeles, CANTSB FTW79FPJ01Accident · 1 fatalClosedPiper PA-25 · Hydro, OKNTSB NYC79FGT02Accident · 1 fatalClosedGyrocopter JW-1 · Smoketown, PANTSB CHI79FEX02Accident · 1 fatalClosedCassutt LSS · Cloverdale, INNTSB FTW79FRG05Accident · No injuriesClosedGreat Lakes 2T-1A · Fredericksburg, TXNTSB ANC79FA008Accident · No injuriesClosedSoloy 12E · Ketchikan, AKNTSB MIA79FLG02Accident · No injuriesClosedPiper PA-28 · Columbia, SCNTSB FTW79DRG03Accident · No injuriesClosedPiper PA-28 · Temple, TXNTSB LAX79DUJ04Accident · Minor injuriesClosedHiller UH-12E · Queen Creek, AZNTSB OAK79DVA05Accident · No injuriesClosedGrumman G-164A · Fresno, CANTSB MIA79DLD03Accident · No injuriesClosedAero Comdr 680FL · Tarpon Springs, FLNTSB FTW79DRJ02Accident · No injuriesClosedSnow S-2R · Acme, LANTSB DEN79FA003Accident · 1 fatalClosedCessna 150J · Eunice, NMNTSB NYC79FA003Accident · 2 fatalClosedPiper PA-28R · Parsippany, NJNTSB MIA79DLA03Accident · Minor injuriesClosedCessna A188B · Waycross, GANTSB FTW79DPD02Accident · No injuriesClosedCessna A188B · Winters, TXNTSB OAK79FVA03Accident · Minor injuriesClosedAero Comdr S2R · Five Points, CANTSB OAK79DVA04Accident · Minor injuriesClosedThrush Cmdr S2R · Corcoran, CANTSB SEA79FA002Accident · 1 fatalClosedPiper PA-11 · Nashua, MTNTSB LAX79FA002Accident · 2 fatalClosedCessna 152 · Scottsdale, AZNTSB MIA79DLA04Accident · No injuriesClosedAmateur Weeks · Keystone, FLNTSB MIA79DKJ01Accident · Minor injuriesClosedPiper PA-25 · Huntsville, ALNTSB LAX79FUQ01Accident · Serious injuriesClosedCessna 150M · Newhall, CANTSB SEA79FYM01Accident · No injuriesClosedHiller Acft UH-12E · Falls City, ORNTSB DEN79FQA01Accident · 1 fatalClosedSteen Skyblt · Albuquerque, NMNTSB FTW79DRJ34Accident · No injuriesClosedGrumman G-164A · Crowville, LANTSB NYC78FHA37Accident · 1 fatalClosedSoneria II · Pipersville, PANTSB OAK78FVA86Accident · Serious injuriesClosedCessna 188 · Mendota, CANTSB OAK78FVM48Accident · Serious injuriesClosedBellanca 7KCAB · Half Moon Bay, CANTSB SEA78FYK24Accident · 1 fatalClosedCallair B-1A · Glide, ORNTSB MIA78FKJ92Accident · No injuriesClosedGrumman G-164B · Blountstown, FLNTSB FTW78FA083Accident · No injuriesClosedAerospatle AS350C · Sabine Pass, TXNTSB NYC78FGM51Accident · Serious injuriesClosedAeronca 7HC · Bridgeville, PANTSB FTW78FA081Accident · 5 fatalClosedBeech 35 · Kerrville, TX