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 LAX77FUM19Accident · Minor injuriesClosedCessna 150M · Santee, CANTSB IAD77FLT02Accident · No injuriesClosedBellanca 14-13 · Parsons, TNNTSB DCA77AA012Accident · 8 fatalClosedPiper PA-31T · Bressler, PANTSB SEA77DYA12Accident · Minor injuriesClosedCessna 421B · Soda Springs, IDNTSB MKC77FER22Accident · Serious injuriesClosedPiper PA-32 · Duluth, MNNTSB DEN77DQA13Accident · Minor injuriesClosedGrum-Amer AA5B · Timberton, NMNTSB CHI77FEC17Accident · Serious injuriesClosedPiper PA-28 · Fraser, MINTSB OAK77FA020Accident · No injuriesClosedLockheed 18-56 · Truckee, CANTSB IAD77FKW15Accident · No injuriesClosedCessna 150 · Gallatin, TNNTSB DEN77FQA22Accident · No injuriesClosedPiper PA-28 · Las Vegas, NMNTSB CHI77FEC15Accident · Serious injuriesClosedCessna 150L · Detroit, MINTSB SEA77FYA10Accident · Serious injuriesClosedCessna 185 · Rexburg, IDNTSB IAD77FLQ07Accident · Minor injuriesClosedAeronca 7AC · Elizabethtown, KYNTSB LAX77FUQ17Accident · Minor injuriesClosedCessna 177 · Simi Valley, CANTSB IAD77FIG11Accident · Serious injuriesClosedBellanca 7ECA · Galena, MDNTSB FTW77FRG27Accident · 1 fatalClosedBeech D18S · Mc Allen, TXNTSB MKC77DTK08Accident · No injuriesClosedCessna 170A · Lemmon, SDNTSB CHI77FEP21Accident · No injuriesClosedCessna 150 · La Crosse, WINTSB LAX77FUM15Accident · Minor injuriesClosedPiper PA-28 · Carlsbad, CANTSB IAD77FA023Accident · Serious injuriesClosedBeechcraft D-18S · Covington, KYNTSB MKC77DCQ17Accident · Minor injuriesClosedPiper PA-28 · Herington, KSNTSB IAD77FKM11Accident · Serious injuriesClosedPiper PA-22 · Kernersville, NCNTSB DEN77FQA19Accident · Serious injuriesClosedBeech G35 · Albuquerque, NMNTSB CHI77FEX13Accident · Minor injuriesClosedPiper PA-28R · Portland, INNTSB OAK77FXQ07Accident · No injuriesClosedErco 415-C · Mammoth Lakes, CANTSB CHI77FEP18Accident · Serious injuriesClosedNavion L-17 · Readstown, WINTSB CHI77FEC14Accident · Minor injuriesClosedPiper PA-28 · Owosso, MINTSB SEA77FA018Accident · 3 fatalClosedPiper PA-28 · Carey, IDNTSB MKC77FCD10Accident · Serious injuriesClosedPiper PA-24 · Waterloo, IANTSB MKC77FER18Accident · Minor injuriesClosedPiper PA-32R · Anoka, MNNTSB IAD77DLQ05Accident · No injuriesClosedCessna 150M · Covington, KYNTSB CHI77FA027Accident · No injuriesClosedCessna 402A · Peoria, ILNTSB FTW77FRA09Accident · No injuriesClosedAlon A2 · North Zulch, TXNTSB CHI77FEI12Accident · No injuriesClosedCessna 172 · Akron, OHNTSB SEA77DYP18Accident · No injuriesClosedBellanca 7ECA · Orofino, IDNTSB MIA77DKJ15Accident · No injuriesClosedCessna 170 · Gadsden, ALNTSB LAX77FUG31Accident · No injuriesClosedCessna 421 · Corona, CANTSB ANC77DAG33Accident · No injuriesClosedPiper PA-11 · Alexander Ck, AKNTSB OAK77DXQ05Accident · No injuriesClosedCessna 150 · Jackpot, NVNTSB ANC77FA024Accident · 1 fatalClosedChase YC122C · Anchorage, AKNTSB FTW77FQD08Accident · Minor injuriesClosedNa Rockwell 112 · Horizon City, TXNTSB FTW77FPA02Accident · No injuriesClosedAmerican AA1 · Plano, TXNTSB IAD77FA019Accident · 3 fatalClosedPiper PA30 · Dyersburg, TNNTSB ANC77DAG24Accident · No injuriesClosedHelio H-250 · Palmer, AKNTSB IAD77FIA08Accident · No injuriesClosedBeech B95A · Weyers Cave, VANTSB MIA77FLG08Accident · No injuriesClosedAero Comdr 100 · Georgetown, SCNTSB CHI77FEC11Accident · No injuriesClosedCessna 310J · Flint, MINTSB SEA77FYE08Accident · Minor injuriesClosedCessna 150 · Langley, WANTSB DEN77FA020Accident · No injuriesClosedHiller Acft FH1100 · Alpine, WYNTSB SEA77FTA08Accident · No injuriesClosedBellanca 7GCBC · Whitewater, MT