NTSB investigations
35,889 cases where the phase of flight was Enroute.
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 = 400)
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 = 400)
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 IAD79DA091Incident · No injuriesClosedBeech 200 · Charleston, WVNTSB FTW79FPM15Accident · No injuriesClosedPiper PA-28R · Tulsa, OKNTSB IAD79IA090Incident · No injuriesClosedPiper PA-31 · Morristown, NJNTSB NYC79FGM48Accident · No injuriesClosedPiper PA-32 · Erie, PANTSB MKC79FER73Accident · No injuriesClosedCessna 140 · Thief Riv Fls, MNNTSB MIA79DKT97Accident · No injuriesClosedCessna 210 · Atlantic Ocean (Atlantic Ocean)NTSB ANC79FA097Accident · 1 fatalClosedCessna 2 207 · Rainy Pass, AKNTSB ANC79FA096Accident · 2 fatalClosedPiper PA-18 · Skwentna, AKNTSB ANC79DAD05Accident · Minor injuriesClosedPiper PA-22 · Haines, AKNTSB MKC79DCJ39Accident · No injuriesClosedPiper PA-28 · Omaha, NENTSB LAX79DA091Accident · No injuriesClosedBell 47G2 · Greenfield, CANTSB ANC79DAA37Accident · No injuriesClosedPiper PA-18 · Tanana, AKNTSB SEA79FYM68Accident · No injuriesClosedCessna 172N · Clatskanie, ORNTSB NYC79FFA38Accident · No injuriesClosedEnstrom F-28A · Newcomb, NYNTSB MKC79FA058Accident · Minor injuriesClosedCessna 177 · Freeman, MONTSB DEN79DTC28Accident · No injuriesClosedCessna 150F · Nsheridan, WYNTSB CHI79FEC57Accident · 2 fatalClosedBreezy RLU-1 · Frazer, MINTSB ANC79FAA36Accident · Minor injuriesClosedPiper PA-18 · Fairbanks, AKNTSB SEA79FYP42Accident · No injuriesClosedCessna P337 · Spokane, WANTSB MKCM.FA059Accident · No injuriesClosedBeech 36 · Bassett, NENTSB SEA79FA060Accident · 2 fatalClosedCessna 150 · Sula, MTNTSB MKC79FA057Accident · 1 fatalClosedCessna 150F · West Quincy, MONTSB SEA79DYA31Accident · No injuriesClosedCessna 182 · Bancroft, IDNTSB IAD79FID37Accident · Serious injuriesClosedHiller FH1100 · Champlain, VANTSB DEN79IA063Incident · No injuriesClosedEnstrom 280-C · Brighton, CONTSB MIA79FLD98Accident · Minor injuriesClosedHam-Flugzeu HFB320 · Tampa, FLNTSB CHI79FEV32Accident · No injuriesClosedPiper PA-38 · Jerseyville, ILNTSB NYC79FGM47Accident · Minor injuriesClosedTeenie 2 · Greenville, PANTSB NYC79AA106Accident · Minor injuriesClosedMcdonnell Douglas DC9 · Boston, MAa fatigue fracture of the aft cabin pressure bulkhead which resulted in a rapid decompression of the aircraft's cabin area. This fracture initiated from a crack below the aft bulkhead access door which was discernible on the X-rays taken during the aircraft's…NTSB MIA80DKU01Accident · No injuriesClosedCessna 150M · Andytown, FLNTSB MIA79FKG70Accident · No injuriesClosedCessna 172M · Atlanta, GANTSB LAX79FXQ37Accident · Serious injuriesClosedN American P-51D · Reno, NVNTSB LAX79DA083Accident · No injuriesClosedPiper PA-28R · Grass Valley, CANTSB IAD79FA082Accident · 1 fatalClosedPiper PA-23 · Linville, NCNTSB CHI79FET32Accident · Minor injuriesClosedPiper PA-28 · Bluffton, INNTSB NYC79FGT21Accident · No injuriesClosedCessna 150 · Atglen, PANTSB FTW79DRA42Accident · No injuriesClosedBoeing A75N1 · La Grange, TXNTSB CHI79FA076Accident · 4 fatalClosedBeech C-45H · Hastings, MINTSB CHI79DA080Incident · Serious injuriesClosedBoeing 727 · Cimarron, NMNTSB SEA79AA058Accident · 12 fatalClosedDouglas DC-7C · Klamath Falls, ORNTSB LAX79IA082Incident · 1 fatalClosedCessna 210 · Tucson, AZNTSB LAX79FXQ36Accident · 1 fatalClosedSchultz SL-1 · Reno, NVNTSB LAX79FA081Accident · 5 fatalClosedBell 47J-2 · Long Beach, CANTSB FTW79DRA40Accident · Minor injuriesClosedCessna 170B · Conroe, TXNTSB DEN79FA061Accident · 2 fatalClosedBeech A-36 · Garfield, CONTSB ANC79FA092Accident · 1 fatalClosedBellanca 7GC · Cooper Landing, AKNTSB MKC79FA054Accident · 1 fatalClosedPiper PA-28 · Mountain View, MONTSB MIA79FKT93Accident · No injuriesClosedCessna 182 · Stuart, FLNTSB IAD79DA079Accident · No injuriesClosedGrumman AA1C · Mt Airy, MDNTSB SEA79FYK31Accident · Minor injuriesClosedM.B.B. BO-209 · Grants Pass, OR