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 MKC77FCA04Accident · No injuriesClosedPiper PA-28R · Chesterfield, MONTSB CHI77FEP06Accident · No injuriesClosedBeech V35R · Cottage Grove, WINTSB CHI77FA007Accident · 1 fatalClosedMooney M20C · Peoria, ILNTSB MIA77FLD17Accident · No injuriesClosedBirdman TL-1 · Deland, FLNTSB OAK77FVG10Accident · 1 fatalClosedCessna T210K · Davis, CANTSB CHI77FEK05Accident · Minor injuriesClosedEnstrom F-28A · Columbus, OHNTSB NYC77FNE06Accident · No injuriesClosedPiper PA-22 · East Haddam, CTNTSB NYC77FGM03Accident · No injuriesClosedCessna 172 · West Hickory, NYNTSB ANC77DAG16Accident · Serious injuriesClosedStinson 108-3 · Aleknagik, AKNTSB LAX77DUQ08Accident · No injuriesClosedChampion 7ACA · Pacoima, CANTSB UNK77X0101Accident · 5 fatalClosedPiper PA-31T · Shannon Arpt, EINTSB MIA77FA007Accident · Serious injuriesClosedFalcon Jet DA-20F · Naples, FLNTSB IAD77DKW07Accident · No injuriesClosedFairchild 24 · Rockwood, TNNTSB DEN77DTC01Accident · No injuriesClosedRobertson 180 · Edgerton, WYNTSB MKC77FER05Accident · No injuriesClosedCessna 150J · Tyler, MNNTSB MIA77FLD13Accident · Serious injuriesClosedStinson 108-3 · Brandon, FLNTSB LAX77FUG07Accident · No injuriesClosedCessna 172 · Perris, CANTSB SEA77DYA05Accident · Minor injuriesClosedCessna 150 · Blackfoot, IDNTSB LAX77FUJ09Accident · No injuriesClosedPiper PA-28 · Springerville, AZNTSB IAD77DA011Accident · 1 fatalClosedBell 47G-2 · Pigeon Forge, TNNTSB CHI77FET04Accident · Serious injuriesClosedMonarch Marske · Michigan City, INNTSB SEA77FTI01Accident · No injuriesClosedBell 47J-2 · Quake Lake, MTNTSB OAK77FVW02Accident · Minor injuriesClosedMooney M20C · Pioche, NVNTSB NYC77FA007Accident · 2 fatalClosedMooney M20C · Andes, NYNTSB FTW77FPD03Accident · Minor injuriesClosedPiper PA-28 · Roanoke, TXNTSB FTW77DRA02Accident · Minor injuriesClosedVollman EAA · Huntsville, TXNTSB FTW77DRA01Accident · No injuriesClosedDemoiselle A · Columbus, TXNTSB NYC76FHA03Accident · Minor injuriesClosedMooney M20E · Manville, NJNTSB MIA77FA005Accident · 1 fatalClosedCessna R172E · Jonesboro, GANTSB CHI77FEC03Accident · No injuriesClosedCessna 205 · Utica, MINTSB ANC76DAA69Accident · No injuriesClosedStinson 108-3 · Nenana, AKNTSB SEA77DYA07Accident · No injuriesClosedCessna T210K · Challis, IDNTSB CHI77FEM08Accident · No injuriesClosedCessna 150L · Sparta, MINTSB ANC77DAA03Accident · No injuriesClosedCessna 172M · Ambler, AKNTSB ANC77DAH06Accident · No injuriesClosedPiper PA-18 · Kenai, AKNTSB LAX77FUM04Accident · No injuriesClosedAero Comdr 600S2R · Calipatria, CANTSB ANC77DA002Accident · No injuriesClosedCessna 172 · Lower Kalskag, AKNTSB FTW77FRG07Accident · No injuriesClosedLake LA-4 · Los Fresnos, TXNTSB NYC76FHA02Accident · Serious injuriesClosedCessna 170B · Analomink, PANTSB MIA78DKT04Accident · Minor injuriesClosedBeech C35 · Key Largo, FLNTSB IAD77DKW04Accident · No injuriesClosedMooney M20E · Jasper, TNNTSB MIA77DKG05Accident · No injuriesClosedGrumman G-164 · Midville, GANTSB IAD77FIG01Accident · Minor injuriesClosedCessna 182P · Hagerstown, MDNTSB MIA77FKG04Accident · No injuriesClosedGlobe GC-1B · Zebulon, GANTSB LAX77DUG06Accident · No injuriesClosedMurphys MM-1 · Chino, CANTSB ANC77DAG22Accident · No injuriesClosedPiper PA-18 · Anchorage, AKNTSB MKC77DER01Accident · No injuriesClosedCessna 180 · Backus, MNNTSB SEA77DYE02Accident · Minor injuriesClosedHiller Acft UH-12E · Brinnon, WANTSB MIA77FKQ02Accident · Serious injuriesClosedAero Comdr 600S2R · Swiftown, MSNTSB FTW77FQG01Accident · 1 fatalClosedWarren-Fayo · Big Spring, TX