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 ANC78DAA36Accident · No injuriesClosedCessna TU206D · Mankomen Lk, AKNTSB IAD78FIG15Accident · Serious injuriesClosedUnited Cons UC-1 · Edgewater, MDNTSB IAD78FID19Accident · Minor injuriesClosedPiper PA-22 · Chesterfield, VANTSB IAD78FIA16Accident · Serious injuriesClosedPazmany PL-4 · Leesburg, VANTSB CHI78FEV34Accident · 1 fatalClosedVari-Viggen · Urbana, ILNTSB FTW78FRD49Accident · Serious injuriesClosedPiper J-3 · Welsh, LANTSB DEN79FQG04Accident · No injuriesClosedPiper PA-28 · Hobbs, NMNTSB DEN78FQA47Accident · Serious injuriesClosedCessna 175 · Albuquerque, NMNTSB FTW78DQG43Accident · No injuriesClosedCessna 188 · Muleshoe, TXNTSB OAK78FVG71Accident · No injuriesClosedPiper PA-22 · Fair Oaks, CANTSB LAX78FUG46Accident · 1 fatalClosedCessna 150B · Rialto, CANTSB MKC78FA059Accident · Serious injuriesClosedCessna 402A · Manhattan, KSNTSB MKC78DCQ35Accident · No injuriesClosedCessna 188 · Sharon Spring, KSNTSB FTW78FPG72Accident · No injuriesClosedCessna 337 · Marshall, ARNTSB OAK78FVA69Accident · Serious injuriesClosedRockwell 112TC · Hanford, CANTSB OAK78FJA12Accident · No injuriesClosedPiper PA-28 · Honolulu, HINTSB OAK78DVG69Accident · No injuriesClosedGrumman G-164 · Pleasant Grove, CANTSB MKC78FTK30Accident · No injuriesClosedCessna 175A · Mud Butte, SDNTSB MIA78DKT71Accident · No injuriesClosedPiper PA-23 · Homestead, FLNTSB LAX78FUG45Accident · No injuriesClosedCessna 150 · Perris, CANTSB IAD78FLJ20Accident · No injuriesClosedCessna 172 · White Lake, NCNTSB IAD78DLQ28Accident · No injuriesClosedCessna 152 · Owensboro, KYNTSB DEN78FA055Accident · Serious injuriesClosedCessna 340 · Riverton, WYNTSB ANC78DAG90Accident · No injuriesClosedCessna 150L · Wasilla, AKNTSB MKC78DCJ34Accident · No injuriesClosedAero Comdr A-9B · Dunbar, NENTSB CHI78FET30Accident · Minor injuriesClosedPiper PA-28 · Hobart, INNTSB MIA78FLD67Accident · 1 fatalClosedCessna 172 · Ocoee, FLNTSB LAX78FUJ88Accident · No injuriesClosedPiper PA-25 · Maricopa, AZNTSB CHI78FEI31Accident · No injuriesClosedPiper PA-20 · Cadiz, OHNTSB MKC78FCA42Accident · Serious injuriesClosedCessna 195 · Rolla, MONTSB MKC78DTK28Accident · No injuriesClosedPiper PA-25 · Menno, SDNTSB MIA78FLG30Accident · No injuriesClosedMooney M20E · Lexington, SCNTSB CHI78FE130Accident · No injuriesClosedCessna 150F · Northfield, OHNTSB SEA78FTI25Accident · No injuriesClosedCessna A188B · Chester, MTNTSB MKC78FER77Accident · No injuriesClosedCassutt 3-M · Cloquet, MNNTSB DCA78AA019Accident · Serious injuriesClosedConvair 580 · Kalamazoo, MINTSB FTW78FPM22Accident · Minor injuriesClosedAero-Comdr 100 · Tahlequah, OKNTSB FTW78FPD25Accident · No injuriesClosedCessna 150G · Grand Prairie, TXNTSB DEN78FTE79Accident · No injuriesClosedTaylorcraft BC1265 · Boulder, CONTSB SEA78FYA19Accident · Serious injuriesClosedBeech S35 · Yellow Pine, IDNTSB NYC78FFJ33Accident · No injuriesClosedSchweizer 2-33A · Tully, NYNTSB MIA78FA107Accident · 1 fatalClosedBeech A23 · Inverness, FLNTSB ANC78DAA32Accident · Minor injuriesClosedStinson 108-3 · Fairbanks, AKNTSB MIA78FLG29Accident · Minor injuriesClosedCessna 182P · Ehrhardt, SCNTSB MIA78FKG64Accident · Minor injuriesClosedCessna 150 · Athens, GANTSB ANC78DAA33Accident · Serious injuriesClosedPiper PA-22 · Bettles, AKNTSB LAX78FUQ38Accident · No injuriesClosedPiper PA-28 · Quartz Hill, CANTSB ANC78DAG87Accident · No injuriesClosedGrum Amer AA1C · Cantwell, AKNTSB MIA78FKJ63Accident · Serious injuriesClosedPiper PA-28R · Tuscaloosa, ALNTSB DEN78FA052Accident · 2 fatalClosedLuscombe 8A · Farmington, NM