NTSB investigations, OR
54 cases where the phase of flight was Uncontrolled descent.
Cases per year
| 1964 | 3 |
|---|---|
| 1965 | 3 |
| 1966 | 3 |
| 1967 | 1 |
| 1968 | 4 |
| 1969 | 3 |
| 1970 | 5 |
| 1971 | 4 |
| 1972 | 5 |
| 1973 | 2 |
| 1974 | 1 |
| 1975 | 2 |
| 1976 | 2 |
| 1977 | 4 |
| 1978 | 2 |
| 1979 | 3 |
| 1981 | 3 |
| 1985 | 1 |
| 1992 | 1 |
| 2004 | 1 |
| 2008 | 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 c.\"eventStateOrRegion\" = 'OR' AND c.\"eventCountry\" = 'USA'
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 c."eventStateOrRegion" = 'OR' AND c."eventCountry" = 'USA'
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 SEA08LA072Accident · 3 fatalLimited investigationFinal reportWooters Lancair ES · Albany, ORThe pilot-in-command's failure to maintain aircraft control while in cruise flight. Contributing to the accident were inadequate planning/decision, icing conditions, and continued flight into known icing conditions.NTSB SEA04CA122Accident · Minor injuriesData collectionFinal reportRobinson R22 Mariner · Hillsboro, ORThe pilot's failure to maintain aircraft control resulting in an uncontrolled descent and subsequent roll over. Low altitude flight and the pilot's encounter with settling with power were contributing factors.NTSB SEA93LA001Accident · No injuriesLimited investigationFinal reportHughes 269C · Hillsboro, ORThe pilot in command's failure to maintain proper altitude during the hover. Factors contributing to the accident were the pilot in command's lack of total experience in rotorcraft and his diversion of attention while hovering.NTSB SEA85LA231Accident · 1 fatalLimited investigationFinal reportMitchell U2 · Prineville, ORPlt was on second flt in newly completed, registered ultralight. Craft had not been issued a certificate of airworthiness. After takeoff, acft was observed to circle airport, then descend out of sight behind trees. Investigation showed steeep, nosedown…NTSB SEA82FA012Accident · 2 fatalClosedPiper PA-32 · Brogan, ORNTSB SEA82FA010Accident · 1 fatalClosedPiper PA-28 · Mill City, ORNTSB SEA81DYM15Accident · No injuriesClosedBell 206A · Mill City, ORNTSB SEA80FA009Accident · 2 fatalClosedMooney M20C · Grass Valley, ORNTSB SEA79FYM28Accident · No injuriesClosedCessna 206G · The Dalles, ORNTSB SEA79FA028Accident · 2 fatalClosedPiper PA-28 · Brothers, ORNTSB SEA79FA014Accident · 2 fatalClosedBellanca 17-30 · Medford, ORNTSB SEA79FA012Accident · 1 fatalClosedCessna 177B · Kimberly, ORNTSB SEA78FA014Accident · 7 fatalClosedAero Cmdr 520 · Cheshire, ORNTSB SEA78FA007Accident · 1 fatalClosedPiper PA-28 · Gales Creek, ORNTSB SEA77FA047Accident · 1 fatalClosedAerostar 601P · Burns, ORNTSB SEA77FA020Accident · 2 fatalClosedPiper PA-24 · Eugene, ORNTSB SEA77FA005Accident · 2 fatalClosedCessna 172 · Pendleton, ORNTSB SEA76AS044Accident · 2 fatalClosedCessna 177B · Roseburg, ORNTSB SEA7KAS006Accident · 2 fatalClosedCessna 195A · Lincoln City, ORNTSB SEA82FA102Accident · 3 fatalClosedCessna 182P · Union Creek, ORNTSB SEA75DYI05Accident · No injuriesClosedLuscombe 8A · Medford, ORNTSB SEA74AS004Accident · 2 fatalClosedCessna 175C · Pacific City, ORNTSB SEA73AS040Accident · 3 fatalClosedPiper PA-28R · Eugene, ORNTSB SEA73AS015Accident · 3 fatalClosedPiper PA-28 · Bend, ORNTSB SEA73AS004Accident · 1 fatalClosedPiper PA-28R · Bandon, ORNTSB SEA72AS039Accident · 1 fatalClosedPiper PA-23 · Salem, ORNTSB SEA72FYC29Accident · No injuriesClosedAero Comdr 680-F · John Day, ORNTSB SEA72AS036Accident · 2 fatalClosedPiper PA-28R · Pendleton, ORNTSB SEA72AS022Accident · 6 fatalClosedBeech C35 · Astoria, ORNTSB SEA71AS047Accident · 5 fatalClosedPiper PA-32 · Meacham, ORNTSB SEA71FVQ20Accident · 1 fatalClosedLuscombe 8E · Lakeview, ORNTSB SEA71AS035Accident · 3 fatalClosedPiper PA-28 · Oakridge, ORNTSB SEA71AS030Accident · 2 fatalClosedMooney M20E · Amity, ORNTSB SEA71DWA21Accident · Minor injuriesClosedHughes 269B · Meacham, ORNTSB SEA71AS005Accident · 2 fatalClosedCessna 150 · Gold Beach, ORNTSB SEA71FWA01Accident · Serious injuriesClosedAeronca 7GCB · Hillsboro, ORNTSB SEA70DVQ06Accident · Minor injuriesClosedAeronca 7BCM · Ashland, ORNTSB SEA75AS015Accident · 1 fatalClosedBeech A35-33 · Oakridge, ORNTSB SEA70A0010Accident · 1 fatalClosedCessna 140 · Newport, ORNTSB SEA69A0044Accident · 1 fatalClosedPiper PA-24 · Pendleton, ORNTSB SEA69A0021Accident · 4 fatalClosedNavion A · Sweet Home, ORNTSB SEA69A0015Accident · 2 fatalClosedPiper PA-28 · Dorena, ORNTSB SEA69F0152Accident · 1 fatalClosedBensen B-8M · Midland, ORNTSB SEA68A0048Accident · 1 fatalClosedPiper PA-24 · Medical Spgs, ORNTSB SEA67A0062Accident · 4 fatalClosedCessna T210F · Lapine, ORNTSB SEA67A0009Accident · 2 fatalClosedPiper PA-22 · Seaside, ORNTSB SEA66A0054Accident · 1 fatalClosedPiper PA-16 · Sutherlin, ORNTSB SEA66A0043Accident · 4 fatalClosedCessna 175 · Bonneville, ORNTSB SEA66A0040Accident · 4 fatalClosedPiper PA-30 · Ironside, ORNTSB SEA65A0056Accident · 2 fatalClosedBeechcraft S35 · Mill City, OR