NTSB investigations
506 cases where the phase of flight was Emergency descent.
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 = 600)
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 = 600)
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 IAD75DIA19Accident · No injuriesClosedBell 47G4 · Bowie, MDNTSB MKC75AN076Accident · 1 fatalClosedCessna 177 · Grand Island, NYNTSB IAD75DIJ09Accident · No injuriesClosedCessna 177B · Volney, VANTSB NYC75FFJ17Accident · Serious injuriesClosedPiper PA-30 · Blasdell, NYNTSB SEA74DTI18Accident · No injuriesClosedBell 47G3B1 · Conrad, MTNTSB CHI74DEM33Accident · No injuriesClosedBell 47G-2 · Greenville, MINTSB IAD74DLT08Accident · No injuriesClosedPiper PA-28 · Memphis, TNNTSB MIA74FKG44Accident · No injuriesClosedEnstrom F-28A · Atlanta, GANTSB UNK73X0118Accident · No injuriesClosedBell 206 · Dhahran (Gulf of Mexico)NTSB NYC74AN009Accident · 1 fatalClosedBell 206A · New York, NYNTSB DEN74DQA06Accident · No injuriesClosedBell 47G3B2 · Luna, NMNTSB IAD73FID22Accident · No injuriesClosedHughes 269C · Richmond, VANTSB ANC73AA037Accident · Serious injuriesClosedDehavilland DHC-2 · Sagwon, AKNTSB CHI73ACO47Accident · No injuriesClosedEnstrom F-28A · Lexington, KYNTSB CHI72FEI03Accident · No injuriesClosedCessna 182 · Northfield, OHNTSB DEN71FTE66Accident · Serious injuriesClosedPiper PA-24 · Sugar City, CONTSB LAX71FUD12Accident · Minor injuriesClosedHughes 269B · Compton, CANTSB OAK71DVD18Accident · No injuriesClosedHughes 369HS · Cotati, CANTSB MIA71FLG09Accident · Minor injuriesClosedHughes 269A · Lexington, SCNTSB FTW70FPJ26Accident · Serious injuriesClosedAero Comdr 690 · Bethany, OKNTSB OAK70DVM15Accident · No injuriesClosedHughes 269B · San Carlos, CANTSB NYC70FHM09Accident · Minor injuriesClosedPiper PA-18A · Wappinger Fall, NYNTSB DEN70AD044Accident · No injuriesClosedHiller Acft FH1100 · Blanca, CONTSB DEN69A0048Accident · 7 fatalClosedBeech 35-33 · Del Norte, CONTSB DEN69D0207Accident · No injuriesClosedPiper J-3 · Greybull, WYNTSB OAK69D0220Accident · Minor injuriesClosedCessna 175 · Goldfield, NVNTSB SEA69A0012Accident · No injuriesClosedBell 47G-3B · Twin Falls, IDNTSB NYC69D0235Accident · No injuriesClosedCessna 150 · Orient Point, NYNTSB NYC69F0076Accident · No injuriesClosedBrantly B-2B · Monroeville, PANTSB OAK68A0075Accident · Minor injuriesClosedBell 47G-5 · Reno, NVNTSB LAX69F0027Accident · No injuriesClosedBell 47D1 · Crona D Mar, CANTSB FTW69D0066Accident · No injuriesClosedCessna 172 · Junction, TXNTSB FTW67A0035Accident · No injuriesClosedHughes 269A · Mineral Wells, TXNTSB SEA68A0021Accident · No injuriesClosedBell 47G3B1 · West Glacier, MTNTSB NYC67A0135Accident · Serious injuriesClosedBensen B-8-7 · Forty Fort, PANTSB NYC67A0094Accident · No injuriesClosedBrantly B-2B · Riverdale, MDNTSB DEN67A0021Accident · Serious injuriesClosedBell 47G3B1 · Old Faithful, WYNTSB FTW67A0027Accident · Minor injuriesClosedHughes 269A · Tulsa, OKNTSB DEN67A0007Accident · Serious injuriesClosedBell 47G3B1 · Riverton, WYNTSB CHI67I0003Incident · No injuriesClosedNord 262 · Erlanger, KYNTSB OAK66A0061Accident · Serious injuriesClosedHughes 269A · Eureka, CANTSB NYC67F0015Accident · Minor injuriesClosedPiper J3 · Tewksbury, MANTSB OAK66A0052Accident · Minor injuriesClosedHughes 269B · Canby, CANTSB MKC66F0430Accident · No injuriesClosedCessna 310B · Springfield, MONTSB MIA66A0080Accident · No injuriesClosedHughes 269B · Saluda, SCNTSB MIA66A0022Accident · No injuriesClosedHughes 269A · Miami, FLNTSB FTW66F0016Accident · Serious injuriesClosedMooney M20C · Foraker, OKNTSB FTW65A0092Accident · Minor injuriesClosedBrantly B2 · Mustang, OKNTSB SEA65A0044Accident · No injuriesClosedBell 47D1 · Roseburg, ORNTSB UNK65X1124Accident · Serious injuriesClosedHughes 269A · Castiac, CA