NTSB investigations
1,978 cases where the phase of flight was Unknown.
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 = 990)
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 = 990)
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 LAX75O0034Accident · No injuriesClosedCurtiss-Wrt C-46F · La Papa, MexicoNTSB LAX75DUJ80Accident · No injuriesClosedCessna 182D · Mesa, AZNTSB MIA7KAM065Accident · 1 fatalClosedPiper PA-30 · Missing AircraftNTSB FTW75ORG72Accident · Minor injuriesClosedCessna 205 · Muzquin, MexicoNTSB DEN75AD043Accident · 2 fatalClosedCessna 150H · Lamar, CONTSB LAX75DUG35Accident · Minor injuriesClosedCessna 180 · Desert Center, CANTSB ANC75AA050Accident · 5 fatalClosedDehavilland DHC-2 · Missing AircraftNTSB MIA75RM032Accident · 1 fatalClosedCessna 177RG · Great Inagua, Burkina FasoNTSB ANC75AA045Accident · 5 fatalClosedGrumman G-21 · Missing AircraftNTSB OAK75O0003Accident · 2 fatalClosedCessna 150L · Missing AcftNTSB DEN75AD031Accident · 1 fatalClosedBeech H35 · Provo, UTNTSB ANC75FAA22Accident · 2 fatalClosedPiper PA-22 · Missing AircraftNTSB LAX75AL026Accident · 1 fatalClosedCessna 150F · Santa Maria, CANTSB OAK75DJA03Accident · 1 fatalClosedBeech A36 · Missing AircraftNTSB FTW75ORG49Accident · No injuriesClosedPiper PA-32 · Agualeguas, MexicoNTSB ANC74AA034Accident · 4 fatalClosedGrumman G-73 · Missing AircraftNTSB DEN75AD016Accident · 2 fatalClosedCessna 150L · Parker, CONTSB FTW75ORG47Accident · 3 fatalClosedCessna T210L · Mal Paso, MexicoNTSB MIA75AM018Accident · 3 fatalClosedCessna 172M · Missing AircraftNTSB MIA75AM015Accident · 2 fatalClosedBeech K35 · Missing AircraftNTSB CHI75IC013Incident · No injuriesClosedBoeing 727 · Chicago, ILNTSB OAK75DXQ02Accident · No injuriesClosedPiper PA-25 · Fallon, NVNTSB MIA75AM007Accident · 6 fatalClosedPiper PA-32 · Missing AircraftNTSB LAX75OL004Accident · 4 fatalClosedCessna 337 · Punta Chivato, MexicoNTSB OAK74AP069Accident · 2 fatalClosedAmer Avco AA5 · Missing AircraftNTSB FTW75OF004Accident · No injuriesClosedCessna U206 · Los Papalotes, MexicoNTSB UNK74X0109Accident · 2 fatalClosedCessna 195 · San Felipe, MexicoNTSB LAX75OL008Accident · 2 fatalClosedCessna 210 · Magdalena, MexicoNTSB LAX75OL011Accident · No injuriesClosedCessna U206C · S.Luis Gnzaga, MexicoNTSB FTW74ORG81Accident · 2 fatalClosedCessna 182J · Zihauatanejo, MexicoNTSB LAX75OL006Accident · No injuriesClosedPiper PA-32 · Tecoripa, MexicoNTSB NYC74AN084Accident · 4 fatalClosedPiper PA-23 · Nantucket, MANTSB OAK74DJA15Accident · 1 fatalClosedCessna 182 · Missing AircraftNTSB MIA74AM068Accident · 1 fatalClosedCessna 414 · Missing AircraftNTSB LAX74OL051Accident · No injuriesClosedCessna 310 · Mazatlan, MexicoNTSB LAX74OL049Accident · 4 fatalClosedMooney M20C · Mulege, MexicoNTSB DEN74FQG02Accident · No injuriesClosedCessna TU206F · Jal, NMNTSB FTW74DRD20Accident · 2 fatalClosedCessna 182 · Mexico City, MexicoNTSB FTW74DRJ26Accident · No injuriesClosedPiper PA-23 · Vera Cruz, MexicoNTSB ANC74AA048Accident · 1 fatalClosedAeronca 15AC · Missing AircraftNTSB CHI74AC030Accident · 1 fatalClosedCessna 337 · Mackinac Cty, MINTSB LAX74OL032Accident · 2 fatalClosedAero Comdr 100 · Hermosillo, MexicoNTSB FTW74DPJ10Accident · No injuriesClosedHelio Acft H-295 · Olustee, OKNTSB MIA74AM021Accident · 3 fatalClosedCessna 150 · Missing AcftNTSB MIA74AM017Accident · 4 fatalClosedBeech S35 · Missing AircraftNTSB CHI74AC013Accident · 4 fatalClosedPiper PA-28 · St.Ignace, MINTSB FTW74DRA15Accident · 1 fatalClosedPiper PA-28 · Empalme, MexicoNTSB SEA74AS002Accident · 2 fatalClosedPiper PA-22 · Missing AircraftNTSB OAK74AP001Accident · 2 fatalClosedAmer Avco AA1 · Garberville, CANTSB FTW73FRG93Accident · 1 fatalClosedGrumman G-164A · Laferia, TX