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 IAD79FA062Accident · No injuriesClosedCessna 402 · Clarksville, TNNTSB NYC79FGT20Accident · Serious injuriesClosedCessna 175 · Hanover, PANTSB NYC79FFJ23Accident · Serious injuriesClosedPiper J-3 · Skaneateles, NYNTSB CHI79FET24Accident · Serious injuriesClosedPiper PA-23 · Hobart, INNTSB SEA79DYM50Accident · No injuriesClosedBeech A36 · Troutdale, ORNTSB MKC79FA040Accident · 1 fatalClosedCessna 177 · Le Sueur, MNNTSB MIA79FKQ16Accident · No injuriesClosedGrumman G-164A · Batesville, MSNTSB FTW79DPG65Accident · No injuriesClosedPiper PA-25 · Holly Grove, ARNTSB ANC79DAA25Accident · No injuriesClosedCessna 170B · Kobuk, AKNTSB NYC79FA051Accident · No injuriesClosedPiper PA-32 · Blue Bell, PANTSB MKC79DCJ29Accident · No injuriesClosedCessna A188B · Hartington, NENTSB SEA79DYE30Accident · No injuriesClosedNavion L-17 · Everett, WANTSB CHI79FEI31Accident · Serious injuriesClosedPiper PA-28 · Milan, OHNTSB NYC79DNC39Accident · No injuriesClosedPiper PA-18S · Jackson, MENTSB MKC79DCD29Accident · No injuriesClosedPiper PA-38 · Ladora, IANTSB MKC79DCA20Accident · No injuriesClosedGrumman G-164A · Clarence, MONTSB MKC79FCG58Accident · No injuriesClosedPiper PA-22 · Clinton, MONTSB MIA79FLD75Accident · No injuriesClosedLockheed T-33 · Sebring, FLNTSB CHI79FEI32Accident · No injuriesClosedCessna 152 · Akron, OHNTSB SEA79FYM47Accident · Minor injuriesClosedPiper J-3 · Clatskanie, ORNTSB MKC79FCD30Accident · Serious injuriesClosedCessna 177A · Cedar Falls, IANTSB LAX79DXQ39Accident · No injuriesClosedWren 182H · Reno, NVNTSB DEN79FQA38Accident · Serious injuriesClosedCessna 172 · Albuquerque, NMNTSB ANC79DAG67Accident · No injuriesClosedPiper PA-18 · Naknek, AKNTSB FTW79DRD45Accident · No injuriesClosedCessna 185F · Lafayette, LANTSB DEN79FTM20Accident · Serious injuriesClosedGrum Amer AA5A · Cleveland, UTNTSB NYC79FHA16Accident · No injuriesClosedCessna 150G · Slatington, PANTSB MKC79FCQ35Accident · No injuriesClosedPiper PA-18A · Westfall, KSNTSB DEN79FTE54Accident · No injuriesClosedPiper PA-28R · Englewood, CONTSB FTW79FPD25Accident · Minor injuriesClosedGrum Amer AA-1C · Richland Hills, TXNTSB FTW79DRA32Accident · No injuriesClosedGrumman G-164A · Arcola, TXNTSB NYC79FA050Accident · 2 fatalClosedPiper PA-12 · Stillmanville, NJNTSB NYC79FFA26Accident · Serious injuriesClosedGrum Amer AA5 · Mechanicville, NYNTSB CHI79FA053Accident · 1 fatalClosedAeronca 11AC · Chippewa Falls, WINTSB SEA79FYE28Accident · No injuriesClosedPiper PA-28 · Federal Way, WANTSB CHI79FEC31Accident · No injuriesClosedPiper PA-22 · Pontiac, MINTSB MIA79FKT76Accident · No injuriesClosedBeech 18 · Homestead, FLNTSB FTW79DPG59Accident · No injuriesClosedRockwell S-2R · Waldenburg, ARNTSB FTW79DPG58Accident · No injuriesClosedSnow S-2R · Light, ARNTSB OAK79DVG54Accident · No injuriesClosedGrumman G-164A · Meridian, CANTSB LAX79FUT01Accident · 1 fatalClosedDouglas DC-7C · Daggett, CANTSB DEN79FTE50Accident · Serious injuriesClosedMooney M20C · Falcon, CONTSB CHI79FCA04Accident · No injuriesClosedAerostar 601P · East St Louis, ILNTSB MIA79FLG24Accident · No injuriesClosedCessna 421B · Trenton, SCNTSB IAD79FIG08Accident · No injuriesClosedCessna 177 · Westminster, MDNTSB ANC79DAA18Accident · No injuriesClosedCessna 172 · Tok Junction, AKNTSB LAX79FVM27Accident · 1 fatalClosedBensen B8M · Paso Robles, CANTSB FTW79DRG42Accident · No injuriesClosedGrum-Amer AA1-B · Freer, TXNTSB NYC79FHA15Accident · Serious injuriesClosedBell 47G-2 · Waupwallopen, PANTSB NYC79DNC79Accident · Minor injuriesClosedPiper PA-16 · Fayette, ME