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 IAD76FLJ06Accident · 1 fatalClosedPiper PA-18A · Kinston, NCNTSB LAX76DUG14Accident · Minor injuriesClosedBoeing A75N1 · Ripley, CANTSB IAD76AI008Accident · 2 fatalClosedPiper PA-28 · Charlotte, NCNTSB CHI76FER03Accident · Serious injuriesClosedPiper PA-22 · Siren, WINTSB MKC76FER21Accident · Minor injuriesClosedPiper PA-23 · Aitkin, MNNTSB MKC76FER19Accident · Serious injuriesClosedTemco GC-1B · Lake Elmo, MNNTSB IAD76FID04Accident · No injuriesClosedCessna 150L · Waynesboro, VANTSB CHI76DEC05Accident · No injuriesClosedDehavilland DH-82A · Otisville, MINTSB ANC7LDAG26Accident · No injuriesClosedPiper PA-18 · Nondalton, AKNTSB ANC76DAG27Accident · No injuriesClosedTaylorcraft 19 · Kodiak, AKNTSB NYC76FNA09Accident · No injuriesClosedCessna 150 · Norwood, MANTSB MIA76FLD09Accident · Minor injuriesClosedCessna 172 · Nw Prt Richey, FLNTSB CHI76FEI07Accident · Minor injuriesClosedCessna 172L · Grafton, OHNTSB MKC76FCQ05Accident · No injuriesClosedPiper PA-24 · Liberal, KSNTSB LAX76FUG12Accident · Serious injuriesClosedSchweizer SGS134 · Adelanto, CANTSB CHI76FET04Accident · No injuriesClosedCreamer TWO · Wabash, INNTSB NYC76FGM03Accident · Minor injuriesClosedPiper PA-22 · Cooperstown, PANTSB DCA76AZ002Accident · Serious injuriesClosedBoeing 727 · Denver, CONTSB ANC76AA020Accident · Minor injuriesClosedHiller Acft UH-12E · Douglas, AKNTSB NYC76DFA05Accident · No injuriesClosedPiper J-3 · Sacandaga Rsvr, NYNTSB FTW76DQG13Accident · No injuriesClosedGrumman G-164A · Dimmitt, TXNTSB ANC75DAA08Accident · No injuriesClosedChampion 7ECA · Healy, AKNTSB ANC76DAG20Accident · Minor injuriesClosedChampion 7EC · Gakona, AKNTSB MKC76DCJ08Accident · No injuriesClosedPiper PA-25 · Benedict, NENTSB IAD76DIA01Accident · No injuriesClosedSopwith PUP · Bealeton, VANTSB IAD75AI005Accident · 4 fatalClosedPiper PA-28R · Boone, NCNTSB CHI76FEV07Accident · Minor injuriesClosedPiper PA-22 · Havana, ILNTSB DEN76DAQ08Accident · No injuriesClosedChampion 7GCBC · Luna, NMNTSB FTW76DPG12Accident · No injuriesClosedAero Comdr 600S2R · Augusta, ARNTSB DEN7LFTC06Accident · Serious injuriesClosedNavion A · Cheyenne, WYNTSB CHI76FEI06Accident · Minor injuriesClosedPiper PA-28 · Chagrin Falls, OHNTSB FTW76DPG11Accident · No injuriesClosedPiper PA-25 · Grubbs, ARNTSB FTW76DPG09Accident · Minor injuriesClosedCessna A188B · Wabbaseka, ARNTSB CHI76AC007Accident · 4 fatalClosedCessna 172 · West Chicago, ILNTSB MKC76ACQ02Accident · No injuriesClosedPiper PA-25 · Herkimer, KSNTSB LAX76O0001Accident · Serious injuriesClosedCessna T337 · Mulege, MexicoNTSB FTW7LFQG16Accident · No injuriesClosedCessna A188B · Shallowater, TXNTSB FTW76AF008Accident · 1 fatalClosedMooney M20B · Marshall, ARNTSB SEA76DYI04Accident · No injuriesClosedPiper PA-32 · Sunriver, ORNTSB OAK76DVM02Accident · No injuriesClosedBeede BD-4 · San Jose, CANTSB CHI76FEP07Accident · 1 fatalClosedNieuport 17 · Milwaukee, WINTSB CHI76FEK02Accident · No injuriesClosedCessna 150M · Hicksville, OHNTSB CHI76FEA04Accident · Minor injuriesClosedPiper PA-28 · Indianapolis, INNTSB MKC76FCG08Accident · No injuriesClosedAero Comdr A-9B · Baldwin, KSNTSB FTW76FPD02Accident · Serious injuriesClosedBede BD-4 · N.Richlnd Hill, TXNTSB DEN76DTC05Accident · No injuriesClosedCessna 170 · Newcastle, WYNTSB DEN76AD006Accident · 5 fatalClosedCessna P206A · Parowan, UTNTSB CHI76FEK01Accident · Minor injuriesClosedBeech D95A · New Knoxville, OHNTSB MKC76DTG05Accident · No injuriesClosedCallair A-9 · Hebron, NDNTSB MIA76FK003Accident · No injuriesClosedBoeing B75N1 · Merigold, MS