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 MKC75OK003Accident · No injuriesClosedCessna T210L · Valles, MexicoNTSB MKC75FCA25Accident · Serious injuriesClosedAmer Avco AA1 · Painton, MONTSB MIA75FLA38Accident · 1 fatalClosedDSK 1-HAWK · Pensacola, FLNTSB LAX75AVA55Accident · Serious injuriesClosedCessna 188 · Lost Hills, CANTSB CHI75FEI41Accident · Serious injuriesClosedCessna A188 · Avon, OHNTSB MIA76FLG31Accident · No injuriesClosedAero Comdr 200-D · Charlestown, SCNTSB OAK75DVA58Accident · Minor injuriesClosedPiper PA-25 · Corcoran, CANTSB MIA75FLD64Accident · No injuriesClosedCessna 150 · Plant City, FLNTSB FTW75ORG67Accident · No injuriesClosedNavion A · San Jose, MexicoNTSB SEA75FYE39Accident · Serious injuriesClosedBeech A35 · Packwood, WANTSB FTW75DRJ29Accident · Serious injuriesClosedCessna 180J · Tallulah, LANTSB FTW75FRJ28Accident · Minor injuriesClosedChampion 7AC · San Augustine, TXNTSB LAX75FUA25Accident · No injuriesClosedPiper PA-24 · Fullerton, CANTSB MIA75FLG28Accident · No injuriesClosedCessna 177 · Blacksburg, SCNTSB FTW75OPD48Accident · 2 fatalClosedLockheed 18 · Vera Cruz, MexicoNTSB FTW75FRD38Accident · Minor injuriesClosedCessna 172F · Slidell, LANTSB FTW75FPA23Accident · Minor injuriesClosedBeech A23A · Plano, TXNTSB MIA75RM074Accident · 1 fatalClosedBeech 95-B55 · Wlkrs Cay, Burkina FasoNTSB NYC75FFA32Accident · No injuriesClosedCessna 150L · Duanesburg, NYNTSB OAK75DXQ41Accident · No injuriesClosedCessna 182 · So Lake Tahoe, CANTSB DCA75AZ009Accident · Serious injuriesClosedDouglas DC-3C · Dubois, PANTSB MKC75FCD39Accident · No injuriesClosedBeech B23 · Sully, IANTSB FTW75DPG39Accident · No injuriesClosedMooney M20E · West Memphis, ARNTSB FTW75DPG38Accident · No injuriesClosedPiper PA-25 · Coy, ARNTSB FTW75DPG43Accident · No injuriesClosedCessna 188 · Jonesboro, ARNTSB CHI75FEE54Accident · No injuriesClosedCessna 140 · Monee, ILNTSB ANC75DAA27Accident · No injuriesClosedCessna 185 · Oliktok, AKNTSB MKC75FCQ38Accident · No injuriesClosedCessna 150 · Pratt, KSNTSB MIA75FLD62Accident · Minor injuriesClosedCessna 150F · Titusville, FLNTSB CHI75FEC41Accident · Serious injuriesClosedCessna 140 · Mason, MINTSB IAD75II053Incident · No injuriesClosedBeech 99 · Washington, DCNTSB NYC75FEV23Accident · No injuriesClosedBell 47G-2 · Eddyville, ILNTSB IAD75DKW12Accident · Serious injuriesClosedDehavilland DHC-3 · Winchester, TNNTSB CHI75FEM31Accident · No injuriesClosedBell 47G · Portage, MINTSB NYC75FNE30Accident · No injuriesClosedPiper PA-16 · E Brookfield, MANTSB MKC75FCJ47Accident · Serious injuriesClosedGlobe GC-1B · North Platte, NENTSB DEN75FTC16Accident · No injuriesClosedCessna 180H · Gillette, WYNTSB MIA75FKJ46Accident · No injuriesClosedStinson 108-3 · Luverne, ALNTSB OAK75FVG47Accident · No injuriesClosedGrum Amer AA1-B · Fair Oaks, CANTSB CHI75FEP46Accident · Serious injuriesClosedPiper PA-28 · Wisconsin Rpds, WINTSB ANC75AA064Accident · No injuriesClosedCessna 206 · Bethel, AKNTSB OAK75DVA47Accident · No injuriesClosedCessna 150 · Modesto, CANTSB NYC75FHA33Accident · No injuriesClosedCessna 150 · Blairstown, NJNTSB DEN75AD047Accident · Serious injuriesClosedCessna U206 · Vernal, UTNTSB SEA75DYG23Accident · No injuriesClosedStearman E75N1 · Craigmont, IDNTSB NYC75AN089Accident · 4 fatalClosedPiper PA-23 · Fulton, NYNTSB FTW75KRA19Accident · Minor injuriesClosedBeech N35 · Galveston, TXNTSB NYC75FEE52Accident · 1 fatalClosedBeech E18S · Wheeling, ILNTSB SEA75DYE35Accident · No injuriesClosedCessna 170B · Issaquah, WANTSB MIA75FKG60Accident · No injuriesClosedAmer Avco AA1-B · Commerce, GA