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 IAD79DIA13Accident · Minor injuriesClosedPiper J-3 · Naylor, MDNTSB ANC79FAA16Accident · No injuriesClosedCessna 150 · Fairbanks, AKNTSB FTW79DRG40Accident · No injuriesClosedGrumman G-164A · Raymondville, TXNTSB CHI79FEM22Accident · No injuriesClosedPiper PA-22 · Lowell, MINTSB MIA79FA094Accident · 2 fatalClosedDouglas DC-3 · Ft Lauderdale, FLNTSB FTW79DA087Accident · Minor injuriesClosedBell 206B · Venice, LANTSB OAK79DXQ19Accident · No injuriesClosedCessna 170B · Reno, NVNTSB MKC79FER48Accident · Minor injuriesClosedCessna 177 · Longville, MNNTSB MIA79FLA28Accident · No injuriesClosedBede BD-5A · Jacksonville, FLNTSB FTW79FRG39Accident · Minor injuriesClosedCessna 310 · San Antonio, TXNTSB SEA79FYM39Accident · Minor injuriesClosedPiper PA-22 · Vancouver, WANTSB NYC79DNC29Accident · No injuriesClosedPiper J-3 · Millinocket, MENTSB LAX79FUQ35Accident · No injuriesClosedErco 415-C · Agua Dulce, CANTSB LAX79FA059Accident · 4 fatalClosedCessna 177 · Long Beach, CANTSB LAX79DUJ79Accident · Minor injuriesClosedSchweizer 2-33A · Maricopa, AZNTSB FTW79FPG51Accident · 1 fatalClosedPiper PA-36 · Tupelo, ARNTSB CHI79FEV23Accident · Serious injuriesClosedGreat Lakes 2T-1A · Taylorville, ILNTSB CHI79DEC30Accident · No injuriesClosedEiriavion PIK-20 · Manchester, MINTSB FTW79FRD40Accident · No injuriesClosedGrumman G-164A · Elton, LANTSB NYC79FHM20Accident · Minor injuriesClosedAeronca 7AC · Stormville, NYNTSB FTW79DPG46Accident · No injuriesClosedNa Rockwell S2R · Fairoaks, ARNTSB CHI79DEP50Accident · Minor injuriesClosedCessna 172H · Boulder Jct, WINTSB OAK79FVM26Accident · No injuriesClosedPiper PA-28 · San Carlos, CANTSB MKC79FCA16Accident · Serious injuriesClosedGrumman AA-5B · Owensville, MONTSB SEA79FTA15Accident · No injuriesClosedPiper PA-18 · Circle, MTNTSB MKC79DCQ26Accident · Minor injuriesClosedPiper PA-28 · Hope, KSNTSB MIA79FA092Accident · 3 fatalClosedPiper PA-22 · Redlick, MSNTSB CHI79FA051Accident · 1 fatalClosedBeech 24R · Traverse City, MINTSB SEA79FYK14Accident · No injuriesClosedPiper PA-28R · Crescent Lake, ORNTSB LAX79FUG44Accident · No injuriesClosedPiper PA-23 · Riverside, CANTSB CHI79FEC28Accident · Serious injuriesClosedPiper J3L · Napoleon, MINTSB OAK79DVG48Accident · Minor injuriesClosedCessna 182 · Lower Lake, CANTSB OAK79DVA37Accident · No injuriesClosedAero Comdr S2C · Coalinga, CANTSB MIA79FKT70Accident · Minor injuriesClosedMooney M20E · Pompano, FLNTSB FTW79DRG38Accident · No injuriesClosedCessna 152 · Austin, TXNTSB MKC79FCG46Accident · No injuriesClosedPiper PA-28 · Maryville, MONTSB DEN79FA042Accident · 1 fatalClosedBellanca 17-30A · Ruidoso, NMNTSB IAD79FKW12Accident · Serious injuriesClosedMooney M-20E · Oak Ridge, TNNTSB ANC79DAG53Accident · No injuriesClosedCessna 170B · Anchorage, AKNTSB FTW79FA082Accident · 1 fatalClosedBellanca 7KCAB · Morris, OKNTSB DEN79FA042Accident · 3 fatalClosedPiper PA-28 · Moab, UTNTSB CHI79FA050Accident · 1 fatalClosedRockwell 112A · Huntley, ILNTSB MKC79DER42Accident · Minor injuriesClosedPiper PA-36 · Sabin, MNNTSB MIA79FA089Accident · 2 fatalClosedLockheed PV-1 · Dania, FLNTSB MIA79DLD71Accident · No injuriesClosedCessna 188B · Bushnell, FLNTSB DCA79AA017Accident · 271 fatalClosedDouglas DC-10 · Chicago, ILNTSB ANC79AA053Accident · 3 fatalClosedDehavnd Can DHC-4A · Bullen Point, AKNTSB LAX79FUQ31Accident · No injuriesClosedSchweizer SGS134 · Llano, CANTSB SEA79FYP22Accident · No injuriesClosedCessna 150F · Mead, WANTSB NYC79FHA14Accident · Serious injuriesClosedPiper PA-28 · Berwick, PA