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 FTW75FPG60Accident · Minor injuriesClosedGrumman G-164 · Boydell, ARNTSB FTW75DRA27Accident · No injuriesClosedGrumman G-164A · Alvin, TXNTSB FTW75DPG80Accident · Minor injuriesClosedPiper PA-25 · Whistleville, ARNTSB FTW75DPG59Accident · No injuriesClosedGrumman G-164 · Holly Grove, ARNTSB FTW75FRD51Accident · No injuriesClosedGrumman G-164A · E.Lake Charles, LANTSB FTW75ARG80Accident · Minor injuriesClosedPiper PA-18A · New Braunfels, TXNTSB MIA75FLG35Accident · No injuriesClosedHughes 269A · Ridge Springs, SCNTSB OAK75DVG63Accident · No injuriesClosedWeatherly 201B · Woodland, CANTSB OAK75FVG62Accident · 1 fatalClosedPiper PA-18A · Hood, CANTSB FTW75DPG58Accident · No injuriesClosedGrumman G-164A · Little Rock, ARNTSB FTW75DPG57Accident · No injuriesClosedAero Comdr 600S2R · Almyra, ARNTSB FTW75DPG55Accident · No injuriesClosedGrumman G-164A · Cotton Plant, ARNTSB DEN75DTE65Accident · No injuriesClosedBellanca 7GCBC · Hereford, CONTSB OAK75FJA10Accident · Minor injuriesClosedTomcat MK-5 · Ewa, HINTSB OAK75DVG61Accident · No injuriesClosedGrumman G-164 · Biggs, CANTSB FTW75FRD48Accident · No injuriesClosedGrumman G-164A · Mermentau, LANTSB CHI75AC084Accident · 2 fatalClosedPiper PA-28 · Peoria, ILNTSB MKC75FCJ52Accident · 1 fatalClosedBellanca 7GCBC · Waco, NENTSB MKC75FCG41Accident · Serious injuriesClosedPiper PA-25 · Bolckow, MONTSB MIA75DKG71Accident · No injuriesClosedPiper PA-25 · Byron, GANTSB NYC75AN104Accident · 1 fatalClosedChampion 7KCAB · Chester, SCNTSB MKC75DCA27Accident · No injuriesClosedBell 47G-2 · Portageville, MONTSB FTW75FRD45Accident · No injuriesClosedGrumman G-164A · Oberlin, LANTSB LAX75AUM24Accident · No injuriesClosedHiller Acft UH-12E · Seeley, CANTSB CHI75AC080Accident · 3 fatalClosedCessna 172M · Grosse Pointe, MINTSB MKC75FCG40Accident · Minor injuriesClosedAero Comdr A-9B · Brunswick, MONTSB FTW75FRD43Accident · Serious injuriesClosedGrumman G-164A · Welsh, LANTSB MKC75DCQ47Accident · No injuriesClosedCessna A188B · Stafford, KSNTSB MIA75FKA09Accident · No injuriesClosedHiller Acft UH-12E · San Juan, PRNTSB CHI75FEE56Accident · No injuriesClosedSikorsky S-55B · Chicago, ILNTSB MIA75FKQ29Accident · 1 fatalClosedCorbin ACE-D · Columbia, MSNTSB IAD75FIA20Accident · Minor injuriesClosedEnstrom F28A · Clifton, VANTSB CHI75FEV31Accident · 1 fatalClosedBell 47D1 · Shawneetown, ILNTSB MKC75FCA30Accident · No injuriesClosedHiller Acft 12E · Charleston, MONTSB IAD75DLT10Accident · No injuriesClosedPiper PA-25 · Montezuma, TNNTSB LAX75AL054Accident · 2 fatalClosedPitts S-2A · Riverside, CANTSB FTW75DRG70Accident · No injuriesClosedPiper PA-25 · Richland, TXNTSB SEA75DYG30Accident · No injuriesClosedGrumman G-164A · Pasco, WANTSB FTW75DQG52Accident · No injuriesClosedBoeing A75N1 · Dougherty, TXNTSB MKC75FER65Accident · 1 fatalClosedPiper PA-25 · Benson, MNNTSB MIA75FKQ27Accident · No injuriesClosedGrumman G-164A · Edwards, MSNTSB CHI75DCA06Accident · No injuriesClosedHiller Acft UH12D · Lebanon, ILNTSB SEA75DYG29Accident · No injuriesClosedBoeing E75 · Dayton, WANTSB CHI75AC077Accident · 2 fatalClosedFunk B85C · Monee, ILNTSB CHI75AC076Accident · 5 fatalClosedBeech 95-B55 · New Albany, OHNTSB FTW75FPD33Accident · No injuriesClosedBell 47K · Arlington, TXNTSB FTW75FPD32Accident · Serious injuriesClosedBell 212 · Fort Worth, TXNTSB MKC75DCQ39Accident · Minor injuriesClosedCessna 150 · Colby, KSNTSB SEA75FYC33Accident · Minor injuriesClosedHiller Acft UH-12E · Willard, WANTSB LAX75DUM23Accident · No injuriesClosedScorpion TOO · Carlsbad, CA