NTSB investigations, PA
46 cases where the phase of flight was Uncontrolled descent.
Cases per year
| 1965 | 3 |
|---|---|
| 1966 | 2 |
| 1967 | 4 |
| 1968 | 6 |
| 1969 | 1 |
| 1970 | 2 |
| 1971 | 7 |
| 1972 | 1 |
| 1973 | 1 |
| 1974 | 5 |
| 1975 | 2 |
| 1976 | 3 |
| 1977 | 2 |
| 1979 | 1 |
| 1980 | 3 |
| 1981 | 2 |
| 1993 | 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\" = 'PA' 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" = 'PA' 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 BFO93LA180Accident · No injuriesLimited investigationFinal reportRobinson R22 · Scottdale, PAThe pilot's selection of unsuitable terrain for landing and his delay in performing remedial action.NTSB NYC82FGT04Accident · 1 fatalClosedCarver HP-14B · Altoona, PANTSB NYC81FA070Accident · 6 fatalClosedPiper PA-32 · Easton, PANTSB NYC81FA010Accident · 1 fatalClosedBeech H18 · Troxelville, PANTSB NYC80FGT21Accident · 1 fatalClosedBensen B-8M · Columbia, PANTSB NYC80FA022Accident · 1 fatalClosedCessna 152 · Indian Head, PANTSB NYC79FA090Accident · 3 fatalClosedPiper PA-28 · No.Whitehall, PANTSB NYC78FA009Accident · 1 fatalClosedPiper PA-28R · North Wales, PANTSB NYC77FA037Accident · 2 fatalClosedCessna U206F · Doylestown, PANTSB NYC77FA014Accident · 1 fatalClosedCessna 172M · Conneautville, PANTSB NYC77FA012Accident · 1 fatalClosedPiper PA-22 · Warren Center, PANTSB NYC77FA005Accident · 1 fatalClosedPiper PA-28 · Frenchville, PANTSB NYC76AN007Accident · 1 fatalClosedPiper PA-28 · Benton, PANTSB NYC76AN005Accident · 1 fatalClosedMooney M20C · Newtown, PANTSB NYC75AN069Accident · 4 fatalClosedCessna 182 · Erie, PANTSB NYC75AN046Accident · 1 fatalClosedN.American F-51D · Chatham, PANTSB NYC75AN039Accident · 2 fatalClosedCessna 172H · Bluebell, PANTSB NYC75AN022Accident · 2 fatalClosedCessna 172 · Catasauqua, PANTSB NYC75AN001Accident · 5 fatalClosedPiper PA-23 · Acme, PANTSB NYC74AN014Accident · 1 fatalClosedCessna 172K · Huntingdon Vly, PANTSB NYC72AN157Accident · 3 fatalClosedBeech 23 · Spring Run, PANTSB NYC72AN085Accident · 1 fatalClosedPiper PA-28 · Malvern, PANTSB NYC72AN083Accident · 1 fatalClosedCessna 150B · Allentown, PANTSB NYC72AN061Accident · 4 fatalClosedPiper PA-28 · Boalsburg, PANTSB NYC72AN051Accident · 1 fatalClosedPiper PA-28R · Washingtnville, PANTSB NYC72FGM03Accident · No injuriesClosedBrantly B2B · Williamsburg, PANTSB IAD71AI054Accident · 4 fatalClosedCessna 310C · Dunlo, PANTSB NYC71AN087Accident · 3 fatalClosedPiper PA-28 · Hallstead, PANTSB NYC71AN063Accident · 3 fatalClosedCessna 310P · Grove City, PANTSB NYC70AN135Accident · 1 fatalClosedPiper PA-32 · Wilkes-Barre, PANTSB NYC69A0109Accident · 1 fatalClosedPiper J-3 · Reading, PANTSB NYC69A0053Accident · 4 fatalClosedPiper PA-23 · Churchville, PANTSB NYC69A0026Accident · 3 fatalClosedPiper PA-24 · Dallas, PANTSB NYC68A0134Accident · 4 fatalClosedPiper PA-28R · Gardners, PANTSB NYC68A0132Accident · 1 fatalClosedPiper PA-28 · Cairnbrook, PANTSB NYC68A0120Accident · 1 fatalClosedPiper PA-22 · Johnstown, PANTSB NYC68A0116Accident · 2 fatalClosedBeech C-33A · Granville, PANTSB NYC68A0049Accident · 2 fatalClosedCessna 182 · Rothsville, PANTSB NYC67F0584Accident · Minor injuriesClosedCessna 172 · Harrow, PANTSB NYC67F0497Accident · No injuriesClosedCessna 150 · Tyrone, PANTSB NYC67A0102Accident · 2 fatalClosedCessna 150 · Fombell, PANTSB NYC67A0077Accident · 3 fatalClosedBeech S35 · Columbia X-Rds, PANTSB NYC66A0102Accident · 2 fatalClosedPiper PA-28 · Falls Creek, PANTSB NYC66A0032Accident · 1 fatalClosedStinson 108-3 · Milroy, PANTSB NYC65A0126Accident · 3 fatalClosedBeechcraft D50 · Hollidaysburg, PANTSB NYC65A0124Accident · 1 fatalClosedPiper PA-25 · Philipsburg, PA