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 OAK78FVW03Accident · 1 fatalClosedJeanie Teenie · Boulder City, NVNTSB MKC78DCA05Accident · No injuriesClosedCessna 150 · West Plains, MONTSB CHI78FEK04Accident · No injuriesClosedCessna 210G · Sidney, OHNTSB DEN78DTE11Accident · No injuriesClosedCessna 206 · Pueblo, CONTSB LAX78FUA01Accident · Serious injuriesClosedBellanca 7KCAB · Huntington Bch, CANTSB FTW78FA011Accident · 3 fatalClosedN.American NA-265 · New Orleans, LANTSB MIA78RA012Accident · 6 fatalClosedCessna 310Q · Freeport, Burkina FasoNTSB MKC78FA007Accident · 1 fatalClosedCessna 310 · Kansas City, KSNTSB CHI78DEX04Accident · No injuriesClosedCessna 150 · Noblesville, INNTSB SEA78FYE01Accident · Serious injuriesClosedAerosport Quail · Spanaway, WANTSB FTW78FRJ05Accident · No injuriesClosedCessna 172 · Ruston, LANTSB OAK78FVD08Accident · No injuriesClosedPiper PA-23 · Hayward, CANTSB DEN78FQA02Accident · Serious injuriesClosedPietenpol Aircam · Albuquerque, NMNTSB ANC78DAG08Accident · No injuriesClosedChampion 7GCAA · Cantwell, AKNTSB OAK78FVD05Accident · Serious injuriesClosedMarske Monarc · Lodi, CANTSB MIA78FLD09Accident · No injuriesClosedCessna 172 · Lake Wales, FLNTSB MIA78FA010Accident · 2 fatalClosedCessna 150L · Inverness, FLNTSB CHI78FEE03Accident · No injuriesClosedCessna 172M · Dekalb, ILNTSB CHI78FA004Accident · 5 fatalClosedCessna 180 · Bidwell, OHNTSB NYC78IA003Incident · No injuriesClosedBoeing 707 · Jamaica, NYNTSB MKC78DCA04Accident · No injuriesClosedCessna A188B · Kahoka, MONTSB NYC78FGM06Accident · Minor injuriesClosedBeechcraft B58 · Ebensburg, PANTSB MKC78FER06Accident · No injuriesClosedBeech C-24R · Camp Ripley, MNNTSB DEN78FTM03Accident · No injuriesClosedBellanca 14-19 · Delta, UTNTSB FTW78FPG04Accident · No injuriesClosedBenson B8M · Rogers, ARNTSB UNK78X0102Accident · No injuriesClosedBeech C24R · Freemason Isl, LANTSB MIA77FLD08Accident · No injuriesClosedPiper PA-24 · Tampa, FLNTSB OAK78FVG05Accident · Serious injuriesClosedPiper PA-28 · Calistoga, CANTSB MKC78FCA02Accident · Serious injuriesClosedCessna 140A · Washington, MONTSB FTW78DPD03Accident · No injuriesClosedPiper PA-25 · Anson, TXNTSB MIA78DKQ02Accident · No injuriesClosedCessna 188 · Mccomb, MSNTSB CHI78FEG02Accident · No injuriesClosedBeech G-35 · Xenia, OHNTSB DEN78FTE05Accident · No injuriesClosedDehavilland DH82A · Lasalle, CONTSB CHI78DEX01Accident · Minor injuriesClosedMoore KR-1 · Sheridan, INNTSB MKC78FCD03Accident · Serious injuriesClosedRyan Navion · Moulton, IANTSB LAX78DUQ03Accident · No injuriesClosedPiper PA-24 · Burbank, CANTSB DEN78FTM06Accident · Minor injuriesClosedCessna 172F · Salina, UTNTSB SEA78FA003Accident · 3 fatalClosedPiper PA-31P · Vancouver, WANTSB OAK77DVA07Accident · No injuriesClosedRockwell S-2R · Five Points, CANTSB FTW78FRG03Accident · No injuriesClosedAmer Avco AA-1A · San Antonio, TXNTSB DEN78DTC01Accident · No injuriesClosedCessna 185 · Hiland, WYNTSB LAX78DUM01Accident · No injuriesClosedGrumman G-164A · Holtville, CANTSB DEN78DTE04Accident · No injuriesClosedGrum Amer AA-5B · Peyton, CONTSB FTW78FA002Accident · No injuriesClosedLear 25B · Amarillo, TXNTSB FTW78FA001Accident · 5 fatalClosedPilatus PC6CH2 · Oklahoma City, OKNTSB FTW78DPJ01Accident · No injuriesClosedCessna A188B · Albert, OKNTSB LAX78DVA06Accident · No injuriesClosedAero Comdr 600S2R · Bakersfield, CANTSB MKC78FTK02Accident · Minor injuriesClosedPiper PA-18 · Newell, SDNTSB SEA78FYM02Accident · Minor injuriesClosedBell 47G3B1 · Alsea, ORNTSB SEA78FTA02Accident · Minor injuriesClosedCessna 210-5 · Lewistown, MT