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 FTW78FRG49Accident · Minor injuriesClosedCessna A188B · Woodsboro, TXNTSB CHI78FEG11Accident · Minor injuriesClosedCessna 150 · Cincinnati, OHNTSB CHI78FEM21Accident · Serious injuriesClosedCessna 150K · Gladstone, MINTSB MKC78DTG10Accident · No injuriesClosedCessna A188B · Wahpeton, NDNTSB MKC78DCJ18Accident · No injuriesClosedBell 47-G2 · Neligh, NENTSB MKC78DCA30Accident · No injuriesClosedBell 47G-2 · Naylor, MONTSB LAX78FUQ32Accident · 1 fatalClosedProsch PR-2 · Mojave, CANTSB FTW78FRJ22Accident · No injuriesClosedChampion 7EC · Waverly, LANTSB FTW78DPG46Accident · No injuriesClosedGrumman G-164A · Beedeville, ARNTSB MKC78FTK23Accident · No injuriesClosedPiper PA-36 · Glenham, SDNTSB MKC78FER56Accident · No injuriesClosedAero-Comdr A9-B · Stephen, MNNTSB MKC78FA048Accident · 1 fatalClosedPiper PA-28 · Albert Lea, MNNTSB FTW78FPJ26Accident · Serious injuriesClosedPiper PA-25 · Enid, OKNTSB OAK78FJA09Accident · Minor injuriesClosedBell 206L · Lihue Kauai, HINTSB FTW78DRD36Accident · Serious injuriesClosedGrumman G-164A · Kaplan, LANTSB FTW78DRD35Accident · No injuriesClosedCessna 188B · De Ridder, LANTSB FTW78DRA27Accident · No injuriesClosedGrumman G-164A · Alvin, TXNTSB FTW78DPG44Accident · No injuriesClosedGrumman G-164 · Brookland, ARNTSB OAK78FA033Accident · 1 fatalClosedPiper PA-24 · Dayton, NVNTSB FTW78FQG34Accident · Minor injuriesClosedAero-Comdr S-2R · Farwell, TXNTSB DEN78FTE60Accident · No injuriesClosedCallair A-9B · Hayden, CONTSB DEN78FA047Accident · 2 fatalClosedBellanca 8KCAB · Green River, WYNTSB SEA78FTI22Accident · 2 fatalClosedPiper PA-18 · Columbia Falls, MTNTSB OAK78DVD41Accident · No injuriesClosedCallair A-9 · Lodi, CANTSB CHI78FEI20Accident · 2 fatalClosedBeech A45 · Newton Falls, OHNTSB MIA78DKJ47Accident · No injuriesClosedBell 47G2 · Henagar, ALNTSB MKC78FTK19Accident · No injuriesClosedPiper PA-36 · Murdo, SDNTSB MIA78DLD49Accident · Minor injuriesClosedPiper J-3 · Tangerine, FLNTSB IAD78FID07Accident · Minor injuriesClosedPitts S-1 · Fredericksburg, VANTSB FTW78FPG34Accident · 1 fatalClosedCessna A188B · Lunsford, ARNTSB FTW78DPG42Accident · No injuriesClosedNa Rockwell S2R · Palestine, ARNTSB MKC78FTG09Accident · 1 fatalClosedCessna 188B · Sheyenne, NDNTSB MKC78FA033Accident · 1 fatalClosedBellanca 8KCAB · Council Bluffs, IANTSB MKC78DER51Accident · No injuriesClosedPiper PA-25 · Ada, MNNTSB CHI78FEM18Accident · No injuriesClosedPiper PA-25 · Grand Rapids, MINTSB NYC78FA061Accident · 1 fatalClosedAmer Avco AA-5A · Guilford, NYNTSB MKC78FCA27Accident · No injuriesClosedGrumman G-164A · Lilbourn, MONTSB MIA78FKQ15Accident · Minor injuriesClosedCessna A188B · Philipp, MSNTSB FTW78DPG41Accident · No injuriesClosedRockwell S2R · Eudora, ARNTSB MKC78FCD31Accident · No injuriesClosedPiper PA-28R · Iowa City, IANTSB MKC78DCQ25Accident · Minor injuriesClosedCessna 188 · Deerfield, KSNTSB MIA78FLD46Accident · No injuriesClosedBoeing A75N1 · Fort Mead, FLNTSB LAX78DUM25Accident · Minor injuriesClosedCessna 150 · Pauma Valley, CANTSB FTW78FA048Accident · 1 fatalClosedPiper PA-23 · Longdale, OKNTSB MKC78FCG33Accident · Serious injuriesClosedGreat Lakes 2T-1A · Napolean, MONTSB MIA78FKQ12Accident · No injuriesClosedBell 47G3B · Red Lick, MSNTSB MIA78FKG45Accident · Serious injuriesClosedSkybolt 1976 · Vidalia, GANTSB MKC78DER47Accident · Minor injuriesClosedPiper PA-25 · Warren, MNNTSB SEA78FTI19Accident · No injuriesClosedPiper PA-25 · Conrad, MTNTSB MIA78FKQ14Accident · Minor injuriesClosedBell 47G · Fayette, MS