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 SEA72FYG06Accident · 1 fatalClosedPiper PA-25 · Ephrata, WANTSB NYC72FIG06Accident · No injuriesClosedBell 47D-1 · Union Bridge, MDNTSB MKC72FER16Accident · No injuriesClosedBoeing A75N1 · Waseca, MNNTSB MKC72FCJ17Accident · No injuriesClosedPiper PA-25 · Gering, NENTSB MIA72FLT04Accident · Minor injuriesClosedPiper PA-25 · Pinson, TNNTSB LAX72DVA11Accident · Minor injuriesClosedBoeing B75N1 · Wheeler Rdg, CANTSB FTW72FRG13Accident · 1 fatalClosedPiper PA-25 · Refugio, TXNTSB FTW72DQD05Accident · Minor injuriesClosedPiper PA-18A · Fabens, TXNTSB FTW72DPG22Accident · No injuriesClosedPiper PA-25 · Holly Grove, ARNTSB MKC72FCD18Accident · 1 fatalClosedPiper PA-18 · Webster City, IANTSB MIA72AM010Accident · 2 fatalClosedStinson 108-2 · Cartersville, GANTSB FTW72DRG16Accident · No injuriesClosedCessna 188 · San Ygnacio, TXNTSB FTW72DPA10Accident · No injuriesClosedBell 47J · Elkhart, TXNTSB MKC72DCJ14Accident · No injuriesClosedPiper PA-25 · Callaway, NENTSB MIA72DKJ13Accident · No injuriesClosedPiper PA-25 · Muscle Shoals, ALNTSB FTW72DPG24Accident · No injuriesClosedGrumman G-164A · Tubbell, ARNTSB DEN72DTE10Accident · No injuriesClosedHughes 269A · Ft Collins, CONTSB CHI72FEP07Accident · Serious injuriesClosedGrumman G-32A · Pickett, WINTSB FTW72DQG11Accident · No injuriesClosedBoeing A75N1 · Friona, TXNTSB NYC72FFJ10Accident · No injuriesClosedHughes 269A · Gainesville, NYNTSB MIA72FKJ22Accident · 1 fatalClosedAero Comdr A-9 · Aliceville, ALNTSB FTW72DPG17Accident · No injuriesClosedBoeing E75 · Dumas, ARNTSB NYC72FNA05Accident · No injuriesClosedBell 47D · Carver, MANTSB LAX72DVA10Accident · Minor injuriesClosedBoeing B75N1 · Wasco, CANTSB FTW72FPJ11Accident · Serious injuriesClosedPiper PA-25 · Hardesty, OKNTSB OAK72OJA05Accident · 1 fatalClosedPilatus PC-6H2 · Long Tieng, LaosNTSB MIA72DKG17Accident · No injuriesClosedAero Comdr A-9B · Vienna, GANTSB FTW72DRD02Accident · No injuriesClosedBoeing A75 · Houma, LANTSB SEA72FYC14Accident · 1 fatalClosedBell 47-G3B · Mt Vernon, ORNTSB MIA72DLT02Accident · No injuriesClosedMooney M20C · Holly Sprngs, MSNTSB FTW72FPG15Accident · 1 fatalClosedBoeing E75 · Dumas, ARNTSB FTW72DPJ05Accident · No injuriesClosedPiper PA-25 · Texhoma, OKNTSB CHI72FEV07Accident · No injuriesClosedPiper PA-25 · Carthage, ILNTSB SEA72DYG05Accident · No injuriesClosedHughes 269C · Pullman, WANTSB LAX72FUJ20Accident · No injuriesClosedCessna 188A · Queen Creek, AZNTSB DEN72AD005Accident · 2 fatalClosedChampion 7GCBC · Morgan, UTNTSB SEA72FYC12Accident · 1 fatalClosedCallair A-9 · Hermiston, ORNTSB MKC72FCQ15Accident · Serious injuriesClosedPiper PA-18 · Johnson, KSNTSB FTW72FPG16Accident · No injuriesClosedGrumman G-164 · Keo, ARNTSB FTW72DRJ03Accident · No injuriesClosedGrumman G-164A · Texarkana, TXNTSB MIA72DKJ08Accident · Minor injuriesClosedPiper PA-25 · Mooresville, ALNTSB FTW72DQG09Accident · No injuriesClosedPiper PA-25 · Muleshoe, TXNTSB SEA72DYA04Accident · No injuriesClosedPiper PA-25 · Firth, IDNTSB FTW72DPG14Accident · No injuriesClosedPiper PA-25 · Heth, ARNTSB FTW72FRJ02Accident · No injuriesClosedPiper PA-25 · Bonita, LANTSB LAX72FUJ42Accident · 1 fatalClosedPiper PA-25 · Wellton, AZNTSB NYC72FNA03Accident · No injuriesClosedPiper PA-18 · Haverhill, MANTSB DEN72AD003Accident · 2 fatalClosedCessna 210G · Torrington, WYNTSB FTW72FPG12Accident · 1 fatalClosedPiper PA-25 · Star City, ARNTSB SEA72DYG04Accident · No injuriesClosedPiper PA-25 · Quincy, WA