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 DEN79DQG05Accident · Minor injuriesClosedPiper PA-36 · Arch, NMNTSB SEA79FYA23Accident · No injuriesClosedPiper PA-25 · Adrian, ORNTSB LAX79DUK09Accident · No injuriesClosedBell M-74 · Ehrenberg, AZNTSB MIA79DLG29Accident · Minor injuriesClosedHiller UH-12E · Timmonsville, SCNTSB IAD79DIJ11Accident · No injuriesClosedBell 47G-4A · Kentuck, WVNTSB IAD79DA071Accident · No injuriesClosedCessna 150 · Oakland, MDNTSB DEN79IA062Incident · No injuriesClosedBellanca 7ECA · Peyton, CONTSB DEN79FTC24Accident · Minor injuriesClosedHughes 369D · Kemmerer, WYNTSB MIA79FLG28Accident · No injuriesClosedPiper PA-18 · Greeleyville, SCNTSB MIA79DLG30Accident · No injuriesClosedBellanca 8GCBC · Sycamore, SCNTSB LAX79FVG70Accident · 1 fatalClosedAero Comndr A-9B · Burney, CANTSB CHI79FEM34Accident · No injuriesClosedBell 47G-2 · Hart, MINTSB CHI79FEC44Accident · 1 fatalClosedStitts SA-3A · Manchester, MINTSB SEA79FYP41Accident · No injuriesClosedBeech 95-B55 · Sandpoint, IDNTSB SEA79FYK21Accident · Serious injuriesClosedMaule M5-235 · Plush, ORNTSB FTW79FRJ20Accident · 1 fatalClosedRockwell S-2R · Waterproof, LANTSB DEN79FA054Accident · 2 fatalClosedPiper PA-18 · Artesia, NMNTSB MIA79DKG62Accident · Minor injuriesClosedCallair A9A · Mcrae, GANTSB FTW79DQG53Accident · No injuriesClosedPiper PA-25 · Slayton, TXNTSB MIA79FKQ22Accident · No injuriesClosedGrumman G-164A · Madison, MSNTSB MIA79FKQ21Accident · No injuriesClosedPiper PA-36 · Tutwiler, MSNTSB MKC79FER62Accident · Serious injuriesClosedBoeing A75 · Austin, MNNTSB LAX79FA065Accident · 2 fatalClosedCessna 305A · Hamilton City, CANTSB LAX79DUG51Accident · Serious injuriesClosedGrumman G-164B · Blythe, CANTSB MIA79DKG60Accident · Serious injuriesClosedCessna 188B · Waynesboro, GANTSB LAX79FJA14Accident · Minor injuriesClosedHiller 12E · Wailuku Maui, HINTSB FTW79DPJ38Accident · Serious injuriesClosedPiper PA-22 · O'Keene, OKNTSB ANC79DAA30Accident · Serious injuriesClosedCessna 185 · Arctic Village, AKNTSB MIA79DKG57Accident · No injuriesClosedHughes 269C · Montezuma, GANTSB LAX79FVA55Accident · Serious injuriesClosedCessna 188 · Modesto, CANTSB IAD79DLJ12Accident · Minor injuriesClosedPiper PA-25 · Elizabeth City, NCNTSB FTW79FPG73Accident · Serious injuriesClosedGrumman G-164A · Kensett, ARNTSB CHI79FEX34Accident · No injuriesClosedPiper PA-25 · Danville, INNTSB MIA79FKG58Accident · Serious injuriesClosedAyres S2R · Leesburg, GANTSB DEN79FTE72Accident · Minor injuriesClosedBell 47G · Greeley, CONTSB MKC80DER65Accident · No injuriesClosedGrumman G-164A · Red Lake Falls, MNNTSB LAX79FVM30Accident · No injuriesClosedBell 47G-2A · Salinas, CANTSB MKC79FCA24Accident · No injuriesClosedGrumman G-164A · Risco, MONTSB LAX79FJA13Accident · Serious injuriesClosedHughes 369D · Makawao Maui, HINTSB FTW79DPG68Accident · No injuriesClosedGrumman G-164B · Hunter, ARNTSB CHI79DEE75Accident · Minor injuriesClosedBoeing E-75N1 · Erie, ILNTSB NYC79FGM40Accident · No injuriesClosedHughes 300C · Barnesboro, PANTSB CHI79FEG21Accident · Serious injuriesClosedSikorsky S-55C · Chillicothe, OHNTSB MKC79DER58Accident · Minor injuriesClosedPiper PA-25 · Warroad, MNNTSB MIA79FKQ20Accident · Minor injuriesClosedNaval Fcty N3N-3 · Petal, MSNTSB MIA79DKJ57Accident · No injuriesClosedBell 47-D1 · Enterprise, ALNTSB MKC79DCJ30Accident · No injuriesClosedEnstrom F28C · Auburn, NENTSB MKC79FTK21Accident · No injuriesClosedPiper PA-36 · Hayes, SDNTSB MKC79FCJ31Accident · No injuriesClosedHughes 269C · Shelton, NENTSB MIA79FLG26Accident · No injuriesClosedMooney M20E · St Matthews, SC