NTSB investigations, 1965
119 cases where the phase of flight was Uncontrolled descent.
Cases per year
| 1964 | 101 |
|---|---|
| 1965 | 119 |
| 1966 | 119 |
| 1967 | 125 |
| 1968 | 142 |
| 1969 | 127 |
| 1970 | 125 |
| 1971 | 136 |
| 1972 | 135 |
| 1973 | 117 |
| 1974 | 103 |
| 1975 | 99 |
| 1976 | 92 |
| 1977 | 118 |
| 1978 | 102 |
| 1979 | 93 |
| 1980 | 85 |
| 1981 | 97 |
| 1982 | 3 |
| 1983 | 5 |
| 1984 | 6 |
| 1985 | 14 |
| 1986 | 5 |
| 1987 | 9 |
| 1989 | 3 |
| 1990 | 6 |
| 1991 | 7 |
| 1992 | 9 |
| 1993 | 6 |
| 1994 | 2 |
| 1995 | 5 |
| 1997 | 2 |
| 1998 | 5 |
| 1999 | 4 |
| 2000 | 7 |
| 2001 | 5 |
| 2002 | 4 |
| 2003 | 3 |
| 2004 | 4 |
| 2005 | 3 |
| 2006 | 4 |
| 2007 | 1 |
| 2008 | 5 |
| 2009 | 1 |
| 2010 | 3 |
| 2011 | 4 |
| 2012 | 2 |
| 2013 | 2 |
| 2015 | 5 |
| 2016 | 1 |
| 2018 | 1 |
| 2019 | 2 |
| 2021 | 1 |
| 2022 | 1 |
| 2024 | 4 |
| 2025 | 2 |
| 2026 | 1 |
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\") = 1965
AND c.\"mKey\" IN (SELECT case_mkey FROM case_phases WHERE main = 650)
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") = 1965
AND c."mKey" IN (SELECT case_mkey FROM case_phases WHERE main = 650)
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 SEA66A0040Accident · 4 fatalClosedPiper PA-30 · Ironside, ORNTSB MKC66A0035Accident · 1 fatalClosedMooney M-20C · Timber Lake, SDNTSB MIA66A0066Accident · 1 fatalClosedCessna 172B · Oneonta, ALNTSB CHI66F0521Accident · Serious injuriesClosedCessna 172D · Walworth, WINTSB MKC66A0034Accident · 1 fatalClosedPiper PA-22 · Burr, NENTSB OAK66A0025Accident · 1 fatalClosedCessna 182 · Stock, CANTSB MIA66F0336Accident · No injuriesClosedErcoupe 415-C · Winchester, TNNTSB LAX66A0043Accident · 4 fatalClosedPiper PA-24 · Oceanside, CANTSB DEN66A0042Accident · 2 fatalClosedPiper PA-22 · Quartzsite, AZNTSB DEN66A0039Accident · 2 fatalClosedCessna 210 · Payson, AZNTSB DEN66A0034Accident · 3 fatalClosedCessna 182E · Santa Fe, NMNTSB FTW66A0047Accident · 1 fatalClosedCessna 150F · Holly Grove, ARNTSB LAX66A0041Accident · 8 fatalClosedLear Jet 23 · Palm Springs, CANTSB MIA66A0056Accident · 3 fatalClosedStinson 108-3 · Lawndale, NCNTSB FTW66A0045Accident · 2 fatalClosedCessna 210 · Ft Stockton, TXNTSB MKC66A0030Accident · 2 fatalClosedUniversal GC-1B · Council Bluffs, IANTSB FTW66A0041Accident · 2 fatalClosedCessna 182H · Moore, OKNTSB FTW66A0040Accident · 2 fatalClosedBeech 95-55 · Lawton, OKNTSB CHI66A0041Accident · 2 fatalClosedLear Jet 23 · Jackson, MINTSB MKC66A0028Accident · 1 fatalClosedPiper PA-28 · Fairfax, MNNTSB MKC66A0027Accident · 5 fatalClosedCessna 310C · Highmore S, SDNTSB CHI66A0038Accident · 2 fatalClosedCessna 310F · Minocqua, WINTSB CHI66F0377Accident · 1 fatalClosedPiper J3C-65 · Saline, MINTSB OAK66A0019Accident · 5 fatalClosedCessna 310 · Burson, CANTSB NYC66F0341Accident · No injuriesClosedTaylorcraft DCO · East Berkshire, VTNTSB DEN66A0027Accident · 1 fatalClosedCessna 150E · Newton, IANTSB ANC66A0017Accident · 1 fatalClosedPiper PA-22S · Ketchikan, AKNTSB FTW66A0035Accident · 1 fatalClosedCessna 182B · Tulsa, OKNTSB MIA66A0038Accident · 1 fatalClosedCessba 140 · Trenton, ALNTSB CHI66A0031Accident · 3 fatalClosedCessna 172 · White Cloud, MINTSB DEN66A0023Accident · 1 fatalClosedBell 47G3B1 · Monticello, UTNTSB UNK65X1537Accident · 3 fatalClosedBeechcraft C-45H · Bao Trai, VMNTSB NYC66A0036Accident · 1 fatalClosedPiper PA-23 · Glen Burnie, MDNTSB CHI66A0028Accident · 1 fatalClosedAeronca 7AC · Whitewater, WINTSB MIA66A0030Accident · 1 fatalClosedCessna 172B · Englewood, FLNTSB ANC66AA011Accident · 2 fatalClosedStinson 108-2 · Council, AKNTSB SEA66A0021Accident · 2 fatalClosedNavion B · Judith Gap, MTNTSB OAK66A0009Accident · 1 fatalClosedCessna 172D · Kyburz, CANTSB NYC66A0032Accident · 1 fatalClosedStinson 108-3 · Milroy, PANTSB ANC66A0008Accident · 3 fatalClosedPiper PA-12 · Anchorage, AKNTSB FTW66F0228Accident · Minor injuriesClosedPiper PA-18 · Booker, TXNTSB CHI66A0019Accident · 1 fatalClosedMooney M-20C · Beloit, WINTSB MIA66A0023Accident · 4 fatalClosedCessna 182B · Logtown, MSNTSB ANC66A0005Accident · 2 fatalClosedAeronca 7DC · 40ssw Tok, AKNTSB ANC66A0003Accident · Serious injuriesClosedBell 47J2 · Seldovia, AKNTSB LAX66A0016Accident · 1 fatalClosedLockheed P-38 · Los Olivos, CANTSB OAK66F0091Accident · No injuriesClosedCessna 172 · Concord, CANTSB FTW66A0007Accident · 1 fatalClosedCessna 172 · 2e Chelsea, OKNTSB MIA66A0014Accident · 1 fatalClosedPiper PA-24 · Parrish, ALNTSB NYC66A0026Accident · 2 fatalClosedCessna 310 · Livingstn Manr, NY