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 MKC79FCG78Accident · No injuriesClosedWar FW-190 · Harrisonville, MONTSB CHI79FET33Accident · No injuriesClosedPiper PA-22 · Peru, INNTSB FTW79FPD43Accident · Minor injuriesClosedPiper PA-28R · Fort Worth, TXNTSB ANC79DA094Accident · No injuriesClosedBell 47G-3B · Yakataga, AKNTSB LAX79FA084Accident · 1 fatalClosedGrumman G-21A · Avalon, CANTSB NYC79FA101Accident · 2 fatalClosedBeech 19 · Manchester, NHNTSB NYC79DFJ27Accident · No injuriesClosedLuscombe 8E · Gasport, NYNTSB MKC79FA055Accident · 2 fatalClosedCessna 172XP · Intl Falls, MNNTSB FTW79FPA30Accident · No injuriesClosedGrum-Amer AA-5 · Princeton, TXNTSB SEA79DYM66Accident · Minor injuriesClosedCessna 182P · Condon, ORNTSB FTW79FPM14Accident · No injuriesClosedPiper PA-28 · Tahlequah, OKNTSB NYC79FA095Accident · 1 fatalClosedBeech N35 · Olean, NYNTSB NYC79FA094Accident · Minor injuriesClosedBell 206B · Merrimack, NHNTSB MIA79FLG32Accident · No injuriesClosedCallair A-9 · Johnsonville, SCNTSB FTW79FPD40Accident · Minor injuriesClosedPiper PA-28R · Wichita Falls, TXNTSB CHI79FEG25Accident · Serious injuriesClosedBeech A36 · Cincinnati, OHNTSB LAX79FUQ44Accident · Serious injuriesClosedPiper PA-28 · Frazier Park, CANTSB LAX79FA076Accident · 1 fatalClosedCessna 172 · Lancaster, CANTSB CHI79FER06Accident · Serious injuriesClosedPiper PA-24 · Menomonie, WINTSB CHI79DA074Accident · No injuriesClosedPiper PA-28R · Moline, ILNTSB SEA79DYE35Accident · No injuriesClosedPiper PA-28 · Lopez Island, WANTSB NYC79FHA27Accident · No injuriesClosedAero Cmdr 112TC · Pittstown, NJNTSB MKC79FER72Accident · No injuriesClosedCessna 150J · Monticello, MNNTSB MIA79DLD92Accident · No injuriesClosedPiper PA-38 · Vero Beach, FLNTSB LAX80FXQ06Accident · Serious injuriesClosedEnstrom 280C · Carson City, NVNTSB IAD79FID35Accident · Minor injuriesClosedPiper PA-12 · Chesapeake, VANTSB IAD79FA076Accident · 1 fatalClosedPiper PA-18 · Warrenton, VANTSB FTW79DQG59Accident · No injuriesClosedPiper PA-36 · Plainview, TXNTSB ANC79DAA35Accident · No injuriesClosedBellanca 7GCBC · Tanana, AKNTSB MKC79DCD37Accident · No injuriesClosedPiper PA-36 · Manning, IANTSB IAD79FID32Accident · No injuriesClosedCessna 177RG · Gordonsville, VANTSB MKC79FA052Accident · 1 fatalClosedMong Sport MS-2 · Sidney, NENTSB LAX79FUM26Accident · No injuriesClosedCessna 150 · San Diego, CANTSB FTW79DPG81Accident · No injuriesClosedRockwell IN S-2R · Wilmont, ARNTSB DEN79FQA50Accident · Minor injuriesClosedPiper PA-28 · Gallup, NMNTSB MIA79DKQ29Accident · No injuriesClosedCessna A188B · Glen Allan, MSNTSB NYC79FA088Accident · 1 fatalClosedAeronca 7AC · Edinboro, PANTSB ANC79DAH06Accident · No injuriesClosedBellanca 7GCBC · Eureka, AKNTSB ANC79DAH01Accident · Minor injuriesClosedCessna 180J · Anchorage, AKNTSB NYC79FHD22Accident · Minor injuriesClosedTeeny 2 · Bridgeport, NJNTSB CHI79FEP76Accident · 2 fatalClosedTom Story WD-6 · Janesville, WINTSB CHI79FEE74Accident · Minor injuriesClosedCessna 182P · Sandwich, ILNTSB CHI79FEC50Accident · No injuriesClosedPiper PA-28R · Hudson, MINTSB CHI79FA071Accident · 3 fatalClosedPiper PA-28R · Grayling, MINTSB MIA79FKG67Accident · Minor injuriesClosedCessna 182P · Chamblee, GANTSB DEN80FQG06Accident · No injuriesClosedCessna 310G · Lovington, NMNTSB ANC79DAH09Accident · No injuriesClosedPiper PA-22S · Eureka, AKNTSB ANC79DAH07Accident · No injuriesClosedPiper PA-18 · Anchorage, AKNTSB FTW79DPG80Accident · Minor injuriesClosedPiper PA-22 · Harrisburg, ARNTSB ANC79DAH02Accident · No injuriesClosedBeech 19 · Soldotna, AK