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 SEA77DYM16Accident · No injuriesClosedPiper PA-36 · Forest Grove, ORNTSB MIA77FLA15Accident · 1 fatalClosedCessna 150L · Bunnell, FLNTSB LAX77DVA16Accident · No injuriesClosedHiller Acft UH-12C · Terra Bella, CANTSB FTW77FA031Accident · 2 fatalClosedGlobe GC-1B · El Paso, TXNTSB LAX77FUM12Accident · No injuriesClosedEL Tomcat 47G · San Diego, CANTSB LAX77DUJ23Accident · Minor injuriesClosedAmer Avco AA1-A · Mesa, AZNTSB LAX77FUJ19Accident · No injuriesClosedBell 47D1 · Parker, AZNTSB OAK77FVD09Accident · Serious injuriesClosedSikorsky S-58 · Alameda, CANTSB MIA77FA023Accident · 1 fatalClosedCessna 172 · Wiggins, MSNTSB FTW77FA027Accident · 2 fatalClosedCessna 150J · Patterson, LANTSB OAK77FVA12Accident · 1 fatalClosedBoeing A75N1 · Oakdale, CANTSB MKC77FCJ08Accident · Minor injuriesClosedBellanca 7ECA · Tecumseh, NENTSB IAD77FLJ06Accident · Serious injuriesClosedTaylorcraft BC12-D · Durants Neck, NCNTSB SEA77DYE06Accident · No injuriesClosedPiper PA-34 · Verlot, WANTSB DEN77FA014Accident · 2 fatalClosedBellanca 7GCBC · Clovis, NMNTSB MKC77FA009Accident · 2 fatalClosedPiper PA-28R · Kadoka, SDNTSB IAD77FA016Accident · 2 fatalClosedBoeing A75 · Crofton, MDNTSB NYC77FGT06Accident · No injuriesClosedCessna 177B · Mifflintown, PANTSB MKC77DTG01Accident · No injuriesClosedCessna 150 · Keene, NDNTSB ANC77DA018Accident · 2 fatalClosedCessna A185F · Nondalton, AKNTSB OAK7MDJA03Accident · No injuriesClosedMurrayair MA-1 · Keaau, HINTSB SEA77FTA04Accident · No injuriesClosedPiper PA-18A · Malta, MTNTSB MIA77FA018Accident · 1 fatalClosedGrum Amer AA-1B · Dorado, PRNTSB MIA77DKG08Accident · No injuriesClosedBell 47D1 · Vanceville, GANTSB DEN77FA013Accident · 1 fatalClosedCessna 120 · Sheridan, WYNTSB NYC77FA019Accident · 5 fatalClosedPiper PA-34 · Forked River, NJNTSB LAX77FA016Accident · 2 fatalClosedPiper PA-28R · Scottsdale, AZNTSB CHI77FA010Accident · 1 fatalClosedCessna 150E · Depere, WINTSB SEA77DYE04Accident · Minor injuriesClosedHiller Acft UH-12E · Neilton, WANTSB FTW77FRJ02Accident · Minor injuriesClosedCessna 182 · Arcadia, LANTSB MIA77FA014Accident · 1 fatalClosedPiper J3C · Copeland, FLNTSB MIA77DKT09Accident · Minor injuriesClosedPiper PA-25 · Boynton Beach, FLNTSB IAD77FIG08Accident · Serious injuriesClosedPiper PA-22 · Lost River, WVNTSB FTW77FA016Accident · 1 fatalClosedCessna 182A · Boutte, LANTSB SEA77FYG11Accident · Serious injuriesClosedHiller Acft UH-12E · Ephrata, WANTSB FTW77FA013Accident · 1 fatalClosedPiper PA-28 · Rosebud, TXNTSB SEA77FYG09Accident · Serious injuriesClosedNaval Fcty N3N-3 · College Place, WANTSB MKC77DCD02Accident · No injuriesClosedCessna 210 · Modale, IANTSB DEN77DTE06Accident · No injuriesClosedPiper PA-25 · Durango, CONTSB CHI77FA005Accident · 1 fatalClosedTaylorcraft DC0-65 · Belleville, ILNTSB DEN77FA008Accident · 2 fatalClosedPiper PA-24 · Grantsville, UTNTSB FTW77FA010Accident · 2 fatalClosedCessna A150M · Cypress, TXNTSB MIA77FKA01Accident · No injuriesClosedGrumman G-164 · Yauco, PRNTSB MIA77FA006Accident · 2 fatalClosedLuscombe 8E · Batesville, MSNTSB FTW77DQD02Accident · Minor injuriesClosedCessna 210H · Pecos, TXNTSB OAK77FA004Accident · 2 fatalClosedBellanca 8GCBC · Las Vegas, NVNTSB SEA77FA003Accident · 1 fatalClosedBellanca 8KCAB · Billings, MTNTSB SEA77DYA03Accident · Minor injuriesClosedLake LA-4 · Boise, IDNTSB FTW77FA005Accident · 1 fatalClosedPiper PA-28R · Elmendorf, TXNTSB DEN77DQA03Accident · No injuriesClosedBell 206B · Aztec, NM