NTSB investigations, 2021
60 cases where the phase of flight was Unknown.
Cases per year
| 1962 | 1 |
|---|---|
| 1963 | 1 |
| 1964 | 29 |
| 1965 | 26 |
| 1966 | 36 |
| 1967 | 48 |
| 1968 | 59 |
| 1969 | 31 |
| 1970 | 33 |
| 1971 | 22 |
| 1972 | 30 |
| 1973 | 28 |
| 1974 | 27 |
| 1975 | 40 |
| 1976 | 15 |
| 1977 | 30 |
| 1978 | 38 |
| 1979 | 41 |
| 1980 | 30 |
| 1981 | 27 |
| 1982 | 51 |
| 1983 | 46 |
| 1984 | 47 |
| 1985 | 41 |
| 1986 | 18 |
| 1987 | 23 |
| 1988 | 24 |
| 1989 | 20 |
| 1990 | 25 |
| 1991 | 15 |
| 1992 | 22 |
| 1993 | 22 |
| 1994 | 12 |
| 1995 | 13 |
| 1996 | 19 |
| 1997 | 16 |
| 1998 | 20 |
| 1999 | 23 |
| 2000 | 13 |
| 2001 | 18 |
| 2002 | 9 |
| 2003 | 12 |
| 2004 | 6 |
| 2005 | 11 |
| 2006 | 7 |
| 2007 | 10 |
| 2008 | 7 |
| 2009 | 10 |
| 2010 | 20 |
| 2011 | 16 |
| 2012 | 19 |
| 2013 | 14 |
| 2014 | 25 |
| 2015 | 27 |
| 2016 | 35 |
| 2017 | 37 |
| 2018 | 45 |
| 2019 | 26 |
| 2020 | 39 |
| 2021 | 60 |
| 2022 | 71 |
| 2023 | 40 |
| 2024 | 60 |
| 2025 | 73 |
| 2026 | 222 |
Where
Latest cases
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 year(c.\"eventDate\") = 2021
AND 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 year(c."eventDate") = 2021
AND 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 GAA22WA061Accident · 2 fatalClass 5 · ForeignBell 412 · Quillen-Neuquen district, ArgentinaNTSB GAA22WA038Accident · 2 fatalClass 5 · ForeignMurphy Rebel · Wasbush, CanadaNTSB GAA22WA041AccidentClass 5 · ForeignPiper PA34 · Gauteng, South AfricaNTSB GAA22WA037Accident · 3 fatalClass 5 · ForeignCessna A185 · Laguna Negra, ParaguayNTSB GAA22WA060Accident · 3 fatalClass 4 · ForeignPiper PA34 · Ubatuba, BrazilNTSB WPR22LA064Accident · No injuriesClass 3 · LimitedFinal reportBeech A36 · Tooele, UTThe total loss of engine power for reasons that could not be determined based on available evidence.NTSB GAA22WA059AccidentClass 5 · ForeignCessna A188 · Joao Pinheiro, BrazilNTSB ERA22LA039Accident · No injuriesClass 3 · LimitedFinal reportBell 47D1 · Zelienople, PAA total loss of engine power for reasons that could not be determined.NTSB ERA22LA029Accident · No injuriesClass 3 · LimitedFinal reportCessna 172 · Westhampton Beach, NYA total loss of engine power during cruise flight for reasons that could not be determined based on the available evidence.NTSB GAA22WA039Accident · 1 fatalClass 5 · ForeignCessna 401 · Tapachula, MexicoNTSB GAA22WA012AccidentClass 5 · ForeignRobinson R44 · Buchen-Sturzenhardt, GermanyNTSB GAA22WA003AccidentClass 3 · ForeignKaman K1200 · Whistler, CanadaNTSB WPR21LA366Accident · No injuriesClass 4 · LimitedFinal reportSharp Ralph R Zenith Stol CH 701 · Bishop, CAA loss of airplane control for undetermined reasons.NTSB GAA22WA020Accident · 2 fatalClass 5 · ForeignBely lebed · Sovetsky, RussiaNTSB GAA21WA231Accident · 1 fatalClass 5 · ForeignMooney M20J · Sundridge, CanadaNTSB GAA21WA225Accident · 1 fatalClass 5 · ForeignPiper J3C · Mauricie, CanadaNTSB CEN21LA414Accident · Minor injuriesClass 3 · LimitedFinal reportCessna 172S · LaSalle, COA loss of engine power for undetermined reasons.NTSB CEN21LA404Accident · No injuriesClass 3 · LimitedFinal reportCessna 182 · Delta, COA total loss of engine power that resulted in a forced landing and subsequent noseover. The reason for the total loss of engine power could not be determined based on the available evidence.NTSB GAA21WA211Accident · 2 fatalClass 5 · ForeignPiper PA24 · Maldonado, UruguayNTSB CEN21FA380Accident · 1 fatalClass 3 · FieldFinal reportPiper J3C-65 · Adrian, MOThe pilot’s failure to maintain control of the airplane which resulted in an aerodynamic stall and impact with terrain.NTSB GAA21WA208Accident · 1 fatalClass 5 · ForeignRockwell 690 · Thunder Bay, CanadaNTSB GAA21WA214Accident · Minor injuriesClass 5 · ForeignAir Tractor AT802 · Popple Depot-New Brunswick, CanadaNTSB CEN21LA367Accident · Minor injuriesClass 3 · LimitedFinal reportPulsar Sport 150 · Osceola, WIThe total loss of engine power for undermined reasons based on available informationNTSB CEN21LA450Accident · No injuriesClass 4 · LimitedFinal reportCessna 140 · Caddo Mills, TXThe missing vertical stabilizer hardware, which resulted in a severe uncommanded yawing motion that necessitated an emergency landing, during which the airplane nosed over and sustained substantial damage to the vertical stabilizer.NTSB GAA21WA193AccidentClass 5 · ForeignSikorsky S92 · South Havra, United KingdomNTSB GAA21WA252Incident · No injuriesClass 5 · ForeignDiamond HK36 · Locarno, SwitzerlandNTSB GAA21WA169Accident · 9 fatalClass 5 · ForeignDe Havilland DHC2 · Örebro, SwedenNTSB CEN21LA307Accident · Serious injuriesClass 4 · LimitedFinal reportQuad City Challenger · Ste. Genevieve, MOAn impact with terrain for reasons that could not be determined based on available evidence.NTSB ANC21LA047Accident · No injuriesClass 3 · LimitedFinal reportPiper J3C-65 · Sterling, AKA partial loss of engine power for reasons that could not be determined based on the available information.NTSB GAA21WA167Accident · Minor injuriesClass 5 · ForeignCessna 152 · Lima, PeruNTSB GAA21WA147Accident · 2 fatalClass 5 · ForeignNorth American T28 · Jickovice, CzechiaNTSB GAA21WA145Accident · 1 fatalClass 5 · ForeignRobinson R44 · Eidanger, NorwayNTSB GAA21WA122Accident · 1 fatalClass 5 · ForeignCessna F172 · Abzac, France, FranceNTSB GAA21WA126Accident · No injuriesClass 5 · ForeignPiper PA38 · Ganderkesee, GermanyNTSB GAA21WA121Accident · Serious injuriesClass 5 · ForeignPiper PA38 · Bad Sobernheim, GermanyNTSB GAA21WA120Accident · 1 fatalClass 5 · ForeignStorm Fury RG · Mucia, Spain, SpainNTSB GAA21WA111Accident · 1 fatalClass 5 · ForeignRobinson R44 · Estepona, SpainNTSB GAA21WA100Accident · 4 fatalClass 5 · ForeignBell 206 · Rio Bravo, GuatemalaNTSB CEN21LA204Accident · 1 fatalClass 3 · LimitedFinal reportPiper J3C-65 · Slaughter, LAA total loss of engine power for reasons that could not be determined from the available evidence.NTSB GAA21WA088Accident · 1 fatalClass 5 · ForeignAgusta A119 · Nuevo Laredo, MexicoNTSB GAA21WA086Accident · 1 fatalClass 5 · ForeignSikorsky S76C+ · Oak Cheon Goon, South KoreaNTSB GAA21WA081Accident · 2 fatalClass 5 · ForeignCessna 172 · Canberra, AustraliaNTSB WPR21LA164Accident · No injuriesClass 3 · LimitedFinal reportCessna 208B · Fairbanks, AKA partial loss of engine power for reasons that could not be determined based on available evidence.NTSB GAA21WA064Accident · Minor injuriesClass 5 · ForeignPiper PA46 · Iztapa, GuatemalaNTSB GAA21WA066Accident · No injuriesClass 5 · ForeignCessna 150 · Cajeme, Sonora, MexicoNTSB GAA21WA061Accident · 2 fatalClass 5 · ForeignCessna T206H · Quintana Roo, Mexico, MexicoNTSB GAA21WA060Accident · 7 fatalClass 5 · ForeignCessna 401 · Hermosillo, Mexico, MexicoNTSB GAA21WA055Accident · No injuriesClass 5 · ForeignCessna 172 · Toledo, SpainNTSB GAA21WA053Accident · 1 fatalClass 4 · ForeignRobinson R44 · Leksand, SwedenNTSB GAA21WA052AccidentClass 5 · ForeignCessna 188 · La Cruz, Mexico