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 DEN79DTM19Accident · No injuriesClosedRockwell A9B · Junction, UTNTSB CHI79FEX28Accident · Minor injuriesClosedBoeing A75N1 · Indianapolis, INNTSB FTW79FPG44Accident · Serious injuriesClosedPiper J3C-65 · Crawfordsville, ARNTSB FTW79FPG42Accident · Serious injuriesClosedPiper PA-25 · Light, ARNTSB MKC79FCQ25Accident · 1 fatalClosedCallair A-9B · Yates Center, KSNTSB MKC79DCJ22Accident · No injuriesClosedGrumman AA5A · Oneill, NENTSB MKC79DCG50Accident · Minor injuriesClosedPiper J3C-65 · Richmond, KSNTSB SEA79FYK15Accident · Serious injuriesClosedPiper PA-25 · Burns, ORNTSB MIA79FKJ40Accident · Minor injuriesClosedGrumman G-164A · Rehobeth, ALNTSB FTW79DRD38Accident · No injuriesClosedGrumman G-164A · Kaplan, LANTSB FTW79DPG45Accident · No injuriesClosedBell 204 · Cherry Valley, ARNTSB NYC79DFJ20Accident · Minor injuriesClosedPiper PA-25 · Cohocton, NYNTSB FTW79FPM09Accident · Minor injuriesClosedPiper PA-25 · Chouteau, OKNTSB SEA79FYP25Accident · Serious injuriesClosedCessna 188B · Patterson, WANTSB FTW79FRD34Accident · No injuriesClosedPiper PA-36 · Lafayette, LANTSB FTW79DPJ20Accident · Minor injuriesClosedPiper PA-25 · Tonkawa, OKNTSB NYC79FFA19Accident · Minor injuriesClosedSmith Mini DSA-1 · E.Chatham, NYNTSB FTW79FRD36Accident · Minor injuriesClosedBoeing 75 · Holmwood, LANTSB FTW79DPJ22Accident · No injuriesClosedPiper PA-25 · Perkins, OKNTSB MKC79FTK15Accident · No injuriesClosedNa Rockwell S-2R · Blunt, SDNTSB FTW79FRA25Accident · 1 fatalClosedAir Tractor AT-301 · East Liverpool, TXNTSB FTW79FQG41Accident · No injuriesClosedGrumman G-164B · Sylvester, TXNTSB FTW79FPG41Accident · Minor injuriesClosedCessna A188B · Beedeville, ARNTSB FTW79DPJ21Accident · No injuriesClosedCessna A188B · Cushing, OKNTSB CHI79FEV22Accident · 1 fatalClosedLuscomb 8A · Garrett, ILNTSB SEA79DYM37Accident · No injuriesClosedAero Comdr S2R · Helix, ORNTSB OAK79FVM24Accident · Minor injuriesClosedBell 47-G2 · Salinas, CANTSB MKC79DER40Accident · No injuriesClosedPiper PA-25 · Watson, MNNTSB FTW79FRG36Accident · 1 fatalClosedCessna A188B · Falfurrias, TXNTSB CHI79DEG13Accident · Minor injuriesClosedBell 47G-2 · Piqua, OHNTSB MKC79FTK14Accident · Serious injuriesClosedAero Comdr S2R · Vivian, SDNTSB MIA79DKG42Accident · Minor injuriesClosedAir Tractor AT-301 · Americus, GANTSB FTW79DRD31Accident · No injuriesClosedGrumman G-164A · Kaplan, LANTSB SEA79FTI15Accident · No injuriesClosedScorpion II · Belgrade, MTNTSB SEA79FA035Accident · 4 fatalClosedHughes 369HS · St Maries, IDNTSB MIA79FA087Accident · 2 fatalClosedCessna 152 · Greenville, MSNTSB MKC79FER44Accident · 1 fatalClosedPiper PA-25 · Gaylord, MNNTSB MKC79FCQ23Accident · Serious injuriesClosedPiper PA-20 · Radium, KSNTSB MKC79DCJ21Accident · No injuriesClosedPiper PA-25 · Hemingford, NENTSB FTW79FRA24Accident · 1 fatalClosedPitts S1C · Morgan Point, TXNTSB FTW79DRA23Accident · Minor injuriesClosedGrumman G-164A · Danbury, TXNTSB CHI79FEM21Accident · No injuriesClosedBell 47D-1 · Middleville, MINTSB CHI79FEK13Accident · No injuriesClosedHiller UH-12E · Lexington, OHNTSB SEA79DYM35Accident · Minor injuriesClosedBell 206B · Island City, ORNTSB MKC79DCJ19Accident · No injuriesClosedCessna 188 · Huntley, NENTSB LAX79DUG38Accident · Minor injuriesClosedPiper PA-24 · Anza, CANTSB SEA79DYP20Accident · No injuriesClosedEL Tomcat MK5A · Moses Lake, WANTSB MIA79FKG41Accident · 1 fatalClosedPitts Spec S-1 · Warner Robins, GANTSB FTW79FPG37Accident · Minor injuriesClosedGrumman G-164 · Dewitt, ARNTSB FTW79FA079Accident · 1 fatalClosedCessna 150J · Wake Village, TX