NTSB investigations
20,559 cases where the phase of flight was Initial climb.
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 = 350)
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 = 350)
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 MIA75FKT88Accident · No injuriesClosedBensen B-8M · Hollywood, FLNTSB IAD75DLT13Accident · Minor injuriesClosedPiper PA-28 · Bells, TNNTSB ANC76FAG04Accident · Minor injuriesClosedPiper PA-18 · Anchorage, AKNTSB LAX75DUJ95Accident · Minor injuriesClosedCessna 210 · Payson, AZNTSB IAD75FIJ20Accident · No injuriesClosedPiper PA-28 · Taplin, WVNTSB NYC75DFA45Accident · No injuriesClosedAeronca 7AC · Oneonta, NYNTSB LAX75AL070Accident · 4 fatalClosedCessna 172M · Tsaile, AZNTSB FTW75AF076Accident · 2 fatalClosedPiper PA-28 · Baton Rouge, LANTSB CHI75DEP71Accident · No injuriesClosedStinson 108-1 · Montello, WINTSB ANC76DAG06Accident · Minor injuriesClosedCessna 180 · Dillingham, AKNTSB FTW75DPJ26Accident · No injuriesClosedCessna 150A · Ada, OKNTSB FTW75AF075Accident · 4 fatalClosedCessna 172 · Plainview, TXNTSB ANC76DAG01Accident · Minor injuriesClosedPiper PA-14 · Anchorage, AKNTSB MIA75FLT07Accident · Minor injuriesClosedBellanca 17-30A · Olive Branch, MSNTSB SEA75FTI35Accident · Serious injuriesClosedCessna 182F · Townsend, MTNTSB NYC75FNA46Accident · Serious injuriesClosedPiper PA-28 · Oak Bluffs, MANTSB ANC76DAG07Accident · Minor injuriesClosedCessna 150E · Tonsina, AKNTSB SEA75FYG44Accident · Serious injuriesClosedErco 415-C · Priest River, IDNTSB NYC75FGM47Accident · Minor injuriesClosedLuscombe 8A · Leechburg, PANTSB ANC75AA092Accident · No injuriesClosedCessna 185F · Bettles, AKNTSB FTW75FPG87Accident · Serious injuriesClosedGrumman G-164A · Amagon, ARNTSB LAX75DUJ88Accident · No injuriesClosedPiper PA-28R · Show Low, AZNTSB ANC75AA091Accident · Minor injuriesClosedCessna 207 · Kwigillingok, AKNTSB ANC75AA090Accident · No injuriesClosedCessna 185 · Kasigluk, AKNTSB MIA75IM089Incident · Minor injuriesClosedBoeing 727 · Miami, FLNTSB NYC75DFJ26Accident · No injuriesClosedCessna 150G · Farmington, NYNTSB MKC75FCA33Accident · 1 fatalClosedK Pinsch Mustng · Chesterfield, MONTSB IAD75FKW19Accident · No injuriesClosedCessna 150 · Crossville, TNNTSB FTW75DPD46Accident · Minor injuriesClosedFairchild PT-26 · Justin, TXNTSB FTW75DPD45Accident · Minor injuriesClosedFleet 16B · Justin, TXNTSB MKC75AK061Accident · Serious injuriesClosedN.American NA-265 · Watertown, SDNTSB LAX75O0028Accident · Serious injuriesClosedStinson 108-2 · Bahia De L.A., MexicoNTSB LAX75DUJ93Accident · No injuriesClosedMooney M20 · Chambers, AZNTSB FTW75AF072Accident · 1 fatalClosedPiper PA-28R · Jasper, TXNTSB CHI75FEK30Accident · No injuriesClosedCessna 150 · Circleville, OHNTSB DEN75DQA49Accident · No injuriesClosedPiper PA-23 · Santa Fe, NMNTSB LAX75DUG49Accident · No injuriesClosedCessna 172 · Phelan, CANTSB MIA75DKJ61Accident · Minor injuriesClosedBellanca 8GCBC · Town Creek, ALNTSB IAD75FID25Accident · No injuriesClosedBellanca 14-19 · New London, VANTSB NYC75FNA45Accident · 1 fatalClosedBaby Ace D1 · Green, RINTSB CHI75FER07Accident · Serious injuriesClosedBeech A23 · Baldwin, WINTSB NYC75AN115Accident · 1 fatalClosedPiper PA-12 · Mount Laurel, NJNTSB LAX75FUG46Accident · Serious injuriesClosedStinson 108-2 · Rubidoux, CANTSB IAD75AI063Accident · No injuriesClosedCessna 320B · Bowling Green, KYNTSB FTW75DRD65Accident · No injuriesClosedGrumman G-164A · Eunice, LANTSB DEN75FTE73Accident · No injuriesClosedGrumman G-164A · Dove Creek, CONTSB CHI75FEP66Accident · No injuriesClosedPiper PA-22 · Pewaukee, WINTSB MKC75FCA32Accident · No injuriesClosedBeech 23 · Chesterfield, MONTSB CHI75AC094Accident · 3 fatalClosedCessna 177 · Detroit, MINTSB LAX75DUJ89Accident · Minor injuriesClosedCessna 170B · St.Johns, AZ