NTSB investigations
1,977 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 GAA23WA009Accident · 7 fatalClass 5 · ForeignBell 407 · Rudraprayag, IndiaNTSB GAA23WA008Accident · Serious injuriesClass 5 · ForeignMooney M20J · Luskintyre, AustraliaNTSB GAA23WA020Accident · No injuriesClass 5 · ForeignEurocopter AS350 · Los Jaramillos, PanamaNTSB GAA23WA005Accident · 1 fatalClass 5 · ForeignBell 206 · Maitland, AustraliaNTSB GAA23WA001Accident · 1 fatalClass 5 · ForeignCessna 206 · Vielbrunn, GermanyNTSB GAA23WA003Accident · 2 fatalClass 5 · ForeignRobinson R22 · Cunderdin, AustraliaNTSB GAA22WA302Accident · 2 fatalClass 5 · ForeignRobinson R44 · Joyabaj, GuatemalaNTSB CEN22LA442Accident · No injuriesClass 3 · LimitedInvestigation openPiper PA-18 · Battle Creek, MINTSB GAA22WA301Accident · 2 fatalClass 5 · ForeignWagaero Sportsman · Champais, Quebec, CanadaNTSB GAA22WA287Accident · 2 fatalClass 5 · ForeignCessna 172 · Shaunavon, CanadaNTSB GAA22WA297AccidentClass 5 · ForeignDan Hawken Titan T-51 · Soest, GermanyNTSB GAA22WA280Accident · 1 fatalClass 4 · ForeignAir Tractor AT502 · Camrose, CanadaNTSB GAA22WA282Accident · 1 fatalClass 5 · ForeignEurocopter EC120B · Bidor, MalaysiaNTSB GAA22WA278Accident · 1 fatalClass 5 · ForeignCessna 208B · Oriximina, BrazilNTSB GAA22WA273Accident · Minor injuriesClass 5 · ForeignCessna 172 · Barrancominas, ColombiaNTSB GAA22WA292AccidentClass 3 · ForeignAgusta A119 · Mount Cusna, ItalyNTSB WPR22LA371Accident · 1 fatalClass 3 · LimitedFinal reportCessna 172M · Pacific Ocean, CAUndetermined because the airplane and pilot were not located.NTSB GAA22WA252Accident · No injuriesClass 5 · ForeignMooney M20E · Augsburg, GermanyNTSB GAA22WA245Accident · 1 fatalClass 5 · ForeignPiper PA11 · Aeródromo Chañar Ladeado, Santa Fe, ArgentinaNTSB GAA22WA248Accident · 1 fatalClass 5 · ForeignRobinson R44 · Lanzhou, ChinaNTSB GAA22WA254Accident · 1 fatalClass 5 · ForeignRobinson R44 · Loanda, BrazilNTSB GAA22WA231Accident · 2 fatalClass 5 · ForeignUnited Consultants UC-1 · Lake Siljan, SwedenNTSB GAA22WA241AccidentClass 5 · ForeignCessna 172RG · Aaachen, GermanyNTSB GAA22WA233Accident · 3 fatalClass 4 · ForeignRobinson R44 · Kronotsky Nature Reserve, RussiaNTSB GAA22WA227Accident · 2 fatalClass 5 · ForeignPiper PA-31-325 · Queretaro, MexicoNTSB GAA22WA225Accident · 2 fatalClass 4 · ForeignBell 206 · Boa Vista, BrazilNTSB GAA22WA222Accident · 1 fatalClass 5 · ForeignBell 206 · Richmond, AustraliaNTSB DCA22WA172IncidentClass 5 · ForeignAirbus A320 · Tbd, OmanNTSB GAA22WA299Accident · 2 fatalClass 5 · ForeignBlackshape BS115 · Zwarte Meer, NetherlandsNTSB ERA22LA287Accident · Serious injuriesClass 3 · LimitedFinal reportMantell Allan T Lightning · Canandaigua, NYThe pilot’s performance of an off-airport landing shortly after takeoff for reasons that could not be determined.NTSB GAA22WA204Accident · 1 fatalClass 5 · ForeignBell 412 · Timika, IndonesiaNTSB DCA22WA130IncidentClass 5 · ForeignAirbus A320 · Peshawar, PakistanNTSB CEN22FA224Accident · 1 fatalClass 3 · FieldFinal reportSchweizer SGS135 · Midlothian, TXThe pilot’s incapacitation by an aortic dissection (natural disease).NTSB GAA22WA195Accident · 1 fatalClass 5 · ForeignCessna 182 · Chirijox, GuatemalaNTSB GAA22WA196Accident · 2 fatalClass 5 · ForeignCessna 152 · Klobuck, PolandNTSB GAA22WA191Accident · 1 fatalClass 5 · ForeignCessna U206G · Sandy Lake First Nation, CanadaNTSB GAA22WA187Accident · 2 fatalClass 5 · ForeignSmith Aerostar 601P · Ceballos, MexicoNTSB GAA22WA298Accident · 5 fatalClass 5 · ForeignRobin D140 · Grenoble, FranceNTSB GAA22WA190Accident · 2 fatalClass 5 · ForeignPiper PA25 · Brasilandia De Minas, BrazilNTSB GAA22WA185Accident · 1 fatalClass 5 · ForeignSikorsky S61N · Tongyeong-si, KiribatiNTSB GAA22WA220Accident · No injuriesClass 5 · ForeignCessna 172 · Augsburg, GermanyNTSB GAA22WA162Accident · 1 fatalClass 5 · ForeignMooney M20K · Springbank, AB, CanadaNTSB GAA22WA161Accident · Serious injuriesClass 5 · ForeignReims F172 · Hodenhagen, GermanyNTSB GAA22WA158Accident · No injuriesClass 5 · ForeignMonnett Sonerai · Jyväskylä, FinlandNTSB ENG22WA019Accident · 3 fatalClass 5 · ForeignSikorsky S92 · Jeju Island, South KoreaNTSB GAA22WA147Accident · 1 fatalClass 4 · ForeignHughes 369 · Port McNeil, CanadaNTSB GAA22WA144Accident · 2 fatalClass 5 · ForeignBell 206 · Adaminaby, AustraliaNTSB GAA22WA142AccidentClass 5 · ForeignPiper PA-28R · Le Touquet, United KingdomNTSB GAA22WA137Accident · 3 fatalClass 5 · ForeignBeech C90A · Temixco, MexicoNTSB CEN22LA156Accident · Minor injuriesClass 3 · LimitedFinal reportCessna 172N · Springtown, TXA total loss of engine power for reasons that could not be determined.