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 MKC72AK052Accident · 3 fatalClosedBeech V35A · Oregon, MONTSB LAX72FUJ80Accident · Serious injuriesClosedMooney M20C · Phoenix, AZNTSB MIA72FLT12Accident · Serious injuriesClosedCessna 150 · Yorkville, TNNTSB FTW72DRD20Accident · Minor injuriesClosedCessna 172D · Lorcauville, LANTSB FTW72AF058Accident · 3 fatalClosedPiper PA-22 · Colorado City, TXNTSB CHI72FEC28Accident · No injuriesClosedBell 47-G5 · Detroit, MINTSB NYC72FHA35Accident · No injuriesClosedBell 206B · Milford, PANTSB MIA72DKT57Accident · Minor injuriesClosedAero Comdr A-9B · Labelle, FLNTSB FTW72AF056Accident · 1 fatalClosedLuscombe 8A · Houston, TXNTSB OAK72DVG36Accident · No injuriesClosedHughes 269B · Winters, CANTSB DEN72AD036Accident · 1 fatalClosedAeronca 7AC · Pima, AZNTSB FTW72FQD23Accident · Serious injuriesClosedTaylorcraft BC12-D · Pecos, TXNTSB MIA72FLD47Accident · Serious injuriesClosedCessna A188A · Arcadia, FLNTSB MIA72FKT50Accident · No injuriesClosedGrumman G-164A · Bryant, FLNTSB MIA72AM075Accident · 2 fatalClosedBell 47D1 · Halls X-Rds, TNNTSB OAK72AP026Accident · 2 fatalClosedPiper J4E · Vacaville, CANTSB NYC72FLJ23Accident · No injuriesClosedCessna 150 · Topsail, NCNTSB FTW72AF047Accident · 2 fatalClosedCessna 140 · Freeport, TXNTSB OAK72FVM21Accident · 1 fatalClosedStearman E75 · Castroville, CANTSB FTW72AF045Accident · 1 fatalClosedChampion 7GCBC · Sanger, TXNTSB DEN72FQA27Accident · No injuriesClosedStearman E75 · Albuquerque, NMNTSB CHI72FLQ26Accident · No injuriesClosedCessna 172L · Bowlng Green, OHNTSB FTW72DPA12Accident · Minor injuriesClosedAeronca 7AC · Palestine, TXNTSB MKC72AK040Accident · 2 fatalClosedCessna 150L · Clay Center, KSNTSB MIA72FKJ37Accident · Minor injuriesClosedTaylorcraft DCO-65 · Mobile, ALNTSB FTW72FPG57Accident · Serious injuriesClosedChampion 7GCBC · Parkin, ARNTSB SEA72AS025Accident · 1 fatalClosedPiper PA-22 · Portland, ORNTSB NYC72DKM15Accident · Minor injuriesClosedCessna 182A · Statesville, NCNTSB MIA72AM054Accident · 2 fatalClosedLuscombe 8A · Santee, SCNTSB FTW72DPJ26Accident · No injuriesClosedBoeing A75N1 · Hollis, OKNTSB FTW72AF035Accident · 2 fatalClosedPiper J3C-65 · Marlow, OKNTSB OAK72FVW20Accident · Minor injuriesClosedHughes 269C · Las Vegas, NVNTSB MIA72FKG60Accident · 1 fatalClosedFly Baby Swords · Winder, GANTSB FTW72FPJ25Accident · Serious injuriesClosedCessna 150 · Mangum, OKNTSB MIA72FKG57Accident · Serious injuriesClosedPiper J3C-65 · Cedartown, GANTSB LAX72AL038Accident · 1 fatalClosedPiper PA-22 · Chloride, AZNTSB OAK72FJA08Accident · Serious injuriesClosedHiller Acft 1100 · Kaanapali, HINTSB LAX72AL035Accident · 2 fatalClosedCessna 150C · Tonopah, AZNTSB NYC72FNA20Accident · 1 fatalClosedPiper J3C-65 · Haverhill, MANTSB FTW72FPD21Accident · 2 fatalClosedZlin Z-526F · Lewisville, TXNTSB OAK72FVG28Accident · No injuriesClosedAero Comdr A-9B · Elmira, CANTSB LAX72FUM15Accident · No injuriesClosedBoeing A75 · Holtville, CANTSB SEA72FYE19Accident · 1 fatalClosedKasper BKB · Arlington, WANTSB SEA72FYA18Accident · Minor injuriesClosedCessna 185 · American Falls, IDNTSB MIA72FKW07Accident · Minor injuriesClosedLuscombe 8A · Ducktown, TNNTSB CHI72DEP22Accident · No injuriesClosedCessna 150 · Kenosha, WINTSB DEN72AD023Accident · 4 fatalClosedCessna 310K · Ramah, NMNTSB CHI71AC025Accident · 2 fatalClosedLuscombe 8A · Hickman, KYNTSB NYC72FNC13Accident · No injuriesClosedCessna 182 · Penacook, NHNTSB MIA72FKG51Accident · Serious injuriesClosedCessna 180H · Hartwell, GA