NTSB investigations
18,850 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 MIA71FKD01Accident · No injuriesClosedSikorsky S-64E · Union City, TNNTSB SEA71DWG01Accident · Minor injuriesClosedPiper PA-25 · Mesa, WANTSB MKC71DDQ01Accident · No injuriesClosedPiper PA-18A · White Lake, SDNTSB CHI71FDJ01Accident · Serious injuriesClosedMooney M20C · Union Grove, WINTSB FTW71DRA03Accident · No injuriesClosedGrumman G-164 · Calvert, TXNTSB MIA70FKG47Accident · 1 fatalClosedPiper PA-25 · Irwinville, GANTSB CHI70AC095Accident · 1 fatalClosedPiper PA-28 · Sturgis, MINTSB OAK70FVD31Accident · 1 fatalClosedStits SA3A · Sonoma, CANTSB CHI70FBA26Accident · 1 fatalClosedPitts S-1 · Winchester, INNTSB NYC70DHD40Accident · No injuriesClosedPiper J-3 · Hammonton, NJNTSB LAX70FUG52Accident · No injuriesClosedBell 47G3B2 · Wrightwood, CANTSB DEN70FXA15Accident · Serious injuriesClosedPiper P-18A · Dubois, WYNTSB OAK70DVG36Accident · No injuriesClosedPiper PA-25 · Lincoln, CANTSB MKC70DCJ29Accident · Minor injuriesClosedPiper PA-25 · Elwood, NENTSB LAX70FUG48Accident · Minor injuriesClosedCessna 150 · Helendale, CANTSB FTW70AF083Accident · 2 fatalClosedCessna 172K · New Braunfels, TXNTSB DEN70FQG19Accident · Serious injuriesClosedBrewer Midget · Portales, NMNTSB CAN714A905Accident · 1 fatalClosedGrumman TBM · St.Martin, CanadaNTSB OAK70DVG35Accident · No injuriesClosedBoeing A75N1 · Maxwell, CANTSB MKC70FDD16Accident · 1 fatalClosedPiper PA-18 · Lehr, NDNTSB MKC70DCQ29Accident · No injuriesClosedCessna A188 · Ness City, KSNTSB SEA70FXM19Accident · Serious injuriesClosedPiper PA-25 · Ontario, ORNTSB MIA70OKT28Accident · No injuriesClosedCessna 150 · Freeport, Burkina FasoNTSB MIA70DLG24Accident · Serious injuriesClosedPiper PA-18A · Darlington, SCNTSB OAK70FVG33Accident · Serious injuriesClosedBoeing A75N1 · Yuba City, CANTSB OAK70FVA19Accident · 1 fatalClosedPiper PA-25 · Cantua Creek, CANTSB MKC70FDM34Accident · No injuriesClosedHughes 269A · Vesta, MNNTSB MKC70DCQ28Accident · No injuriesClosedSnow S2A · Atwood, KSNTSB MIA70FKJ42Accident · Serious injuriesClosedPiper PA-25 · Atmore, ALNTSB MKC70AK072Accident · 2 fatalClosedCessna 150H · Alta, IANTSB FTW70DRG51Accident · No injuriesClosedGrumman G-164 · Edcouch, TXNTSB FTW70FRG49Accident · Minor injuriesClosedAero Comdr A-9B · Devine, TXNTSB FTW70DPG34Accident · Minor injuriesClosedPiper PA-25 · Chicot, ARNTSB MIA70FKG38Accident · Serious injuriesClosedCallair A-9 · Arlington, GANTSB LAX71DUM04Accident · Minor injuriesClosedBeech C35 · El Rosario, MexicoNTSB FTW70FPG35Accident · Serious injuriesClosedCallair A9B · Newport, ARNTSB MIA70FKJ38Accident · No injuriesClosedPiper PA-18 · Muscle Shoals, ALNTSB NYC70DFM16Accident · No injuriesClosedBell 47G2 · Danbury, CTNTSB MIA70FKG37Accident · 1 fatalClosedAero Comdr A-9B · Dover, GANTSB MIA70FKG36Accident · Serious injuriesClosedAero Comdr A-9B · Leesburg, GANTSB FTW70FRG48Accident · No injuriesClosedBoeing B75N1 · Raymondville, TXNTSB FTW70DRA38Accident · No injuriesClosedGrumman G-164A · El Campo, TXNTSB SEA70FDA12Accident · No injuriesClosedCallair A-9 · Moore, MTNTSB MKC70DCA14Accident · No injuriesClosedBell 47D1 · Perry, MONTSB MIA70AM095Accident · 2 fatalClosedChampion 7KCAB · Grnd Turk, Burkina FasoNTSB CHI70FGA11Accident · Serious injuriesClosedHughes 369HS · Kettering, OHNTSB MKC70DDD23Accident · Minor injuriesClosedPiper PA-25 · Wahpeton, NDNTSB OAK70FVW17Accident · Minor injuriesClosedBell 47G3B2 · Las Vegas, NVNTSB OAK70DVG26Accident · No injuriesClosedBoeing A75-N1 · Merrill, ORNTSB MKC70FCG30Accident · Serious injuriesClosedPiper PA-25 · Holton, KS