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 MIA82FA023Accident · 4 fatalClosedMaule M-6 · Summerland Key, FLNTSB ANC82DAG11Accident · Minor injuriesClosedBellanca 17-31 · Anchorage, AKNTSB LAX82FA027Accident · 4 fatalClosedCessna 182L · Coalinga, CANTSB NYC82FGT06Accident · No injuriesClosedStinson 108 · Brogue, PANTSB ANC82FA010Accident · 4 fatalClosedCessna 207A · Tyonek, AKNTSB ATL82FKW03Accident · Serious injuriesClosedBeech V35B · Concord, TNNTSB LAX82DUG04Accident · Minor injuriesClosedCessna 150F · Adelanto, CANTSB CHI82FEV04Accident · No injuriesClosedCessna 177B · Villa Grove, ILNTSB ANC82FA009Accident · No injuriesClosedPiper PA-32 · Tuntutuliak, AKNTSB LAX82FVA09Accident · No injuriesClosedAero Comdr S-2R · Corcoran, CANTSB LAX82FUJ16Accident · Serious injuriesClosedCessna 140 · Cottonwood, AZNTSB ATL82FA024Accident · 2 fatalClosedCessna 210N · Rock Hill, SCNTSB ATL82FA023Accident · 2 fatalClosedCessna 310K · Gainsville, GANTSB LAX82FVD06Accident · No injuriesClosedBeech C23 · Hayward, CANTSB FTW82FQA10Accident · No injuriesClosedCessna 182RG · Tucumcari, NMNTSB CHI82FER15Accident · Minor injuriesClosedMooney M20K · Buffalo, MNNTSB LAX82DVG09Accident · Serious injuriesClosedCessna 182 · Redding, CANTSB LAX82DVM05Accident · No injuriesClosedPiper PA-38 · Hollister, CANTSB LAX82DUJ13Accident · No injuriesClosedPiper PA-23 · Phoenix, AZNTSB CHI82FER13Accident · No injuriesClosedCessna 182B · Eden Prairie, MNNTSB LAX82FVG08Accident · Serious injuriesClosedMooney M20D · Napa, CANTSB FTW82FRG14Accident · Serious injuriesClosedCessna 177RG · Laredo, TXNTSB MKC82FA007Accident · 5 fatalClosedCessna 182P · Wauneta, NENTSB LAX82FVG06Accident · No injuriesClosedPiper PA-32 · Woodland, CANTSB FTW82DRJ05Accident · Minor injuriesClosedPiper JC3-65 · Oil City, LANTSB DEN82FTE10Accident · No injuriesClosedMome II · Longmont, CONTSB ATL82DID03Accident · No injuriesClosedChampion 7ECA · Virginia Beach, VANTSB MKC82DCG07Accident · Minor injuriesClosedVolksplane VP-1 · St Joseph, MONTSB FTW82FRG11Accident · Serious injuriesClosedPiper PA-38 · Austin, TXNTSB CHI82FEM05Accident · Serious injuriesClosedPiper PA-22 · Wayland, MINTSB NYC82FFJ06Accident · No injuriesClosedPiper PA-28 · Rochester, NYNTSB FTW82FPD06Accident · No injuriesClosedMitchell B-10 · Arlington, TXNTSB FTW82DRD06Accident · No injuriesClosedBell 206L-1 · Cameron, LANTSB CHI82FEP09Accident · 1 fatalClosedOsprey 2 · Madison, WINTSB FTW82FPD05Accident · No injuriesClosedBoeing E75 · Roanoke, TXNTSB FTW82FQA09Accident · Minor injuriesClosedBellanca 17-31A · Farmington, NMNTSB FTW82DA020Accident · 1 fatalClosedPiper J3C-65 · Conroe, TXNTSB ANC82DAG06Accident · No injuriesClosedCessna A185F · Anchorage, AKNTSB FTW82FRG08Accident · Minor injuriesClosedBantam 1 · San Antonio, TXNTSB MIA82FLD06Accident · Minor injuriesClosedPiper PA-28 · Merritt Island, FLNTSB DEN82FA006Accident · 2 fatalClosedMitsubishi MU-2B · Saratoga, WYNTSB NYC82FFJ02Accident · Serious injuriesClosedCessna 152 · Lockport, NYNTSB LAX82FA010Accident · 2 fatalClosedPiper PA-23 · San Fernando, CANTSB FTW82FRA07Accident · No injuriesClosedAero Comdr 112 · Baytown, TXNTSB FTW82DRG07Accident · No injuriesClosedBell 47G-4A · Telegraph, TXNTSB MIA82DLD04Accident · No injuriesClosedHeath Para · Mulberry, FLNTSB CHI82FEG01Accident · Serious injuriesClosedMonocoupe 113 · New Carlisle, OHNTSB FTW82AA016Accident · 1 fatalClosedBeech E90 · Mineral Wells, TXNTSB LAX82FUA03Accident · No injuriesClosedBeech J35 · Torrance, CANTSB FTW82FRA05Accident · No injuriesClosedCessna 172N · Houston, TX