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 FTW81FQA42Accident · Serious injuriesClosedCessna 172RG · Eagle Nest, NMNTSB SEA81FYK16Accident · No injuriesClosedBeech 95-C55 · Roseburg, ORNTSB NYC81DFA24Accident · Minor injuriesClosedCessna 150M · Hancock, NYNTSB DEN81FA060Accident · 1 fatalClosedCessna T207 · Casper, WYNTSB ATL81FLT15Accident · No injuriesClosedAir Tractor AT-301 · Obion, TNNTSB CHI81DEM38Accident · No injuriesClosedCessna 150 · Mcbain, MINTSB LAX81FVD40Accident · 1 fatalClosedMinatre KR-2 · Tracy, CANTSB ANC81DAA25Accident · No injuriesClosedPiper PA-18 · Fairbanks, AKNTSB FTW81FRA51Accident · Serious injuriesClosedEaa Biplane P-2 · Baytown, TXNTSB FTW81DRD38Accident · No injuriesClosedCessna A188B · Labbadiville, LANTSB FTW81DQG54Accident · No injuriesClosedHeadwind Main · Canyon, TXNTSB ATL81FLT13Accident · Serious injuriesClosedCessna 150 · Jackson, TNNTSB SEA81FYP34Accident · No injuriesClosedBoeing E75 · Omak, WANTSB MKC81DCJ28Accident · No injuriesClosedCessna A188B · Riverton, NENTSB CHI81FEM36Accident · Serious injuriesClosedPiper PA-28 · Mackinaw, MINTSB LAX81FA117Accident · 1 fatalClosedBeech C33 · S.Lake Tahoe, CANTSB ATL81FKG43Accident · Minor injuriesClosedGulf Amer AA-5A · Savannah, GANTSB ANC81FAA24Accident · Minor injuriesClosedAero Comdr 500S · Healy, AKNTSB LAX81FUJ85Accident · Minor injuriesClosedBell 47D1 · Poston, AZNTSB NYC81FHM13Accident · No injuriesClosedPiper PA-18 · Colts Neck, NJNTSB FTW81FQA39Accident · No injuriesClosedPiper PA-28R · Santa Fe, NMNTSB DEN81FTA13Accident · No injuriesClosedCessna 177 · Lavina, MTNTSB MKC81DCD32Accident · No injuriesClosedPiper PA-28 · Orange City, IANTSB ANC81DAG64Accident · No injuriesClosedAeronca 7DC · Takotna, AKNTSB FTW81DA129Accident · Serious injuriesClosedBell 206L · Leeville, LANTSB ATL81DLG19Accident · No injuriesClosedAir Tractor AT-301 · Manning, SCNTSB FTW81DQG46Accident · No injuriesClosedCessna 188B · Portales, NMNTSB FTW81DPG59Accident · No injuriesClosedAero Comdr S2R · Swifton, ARNTSB DEN81DTK19Accident · Minor injuriesClosedCessna A188B · Webster, SDNTSB MKC81FCA23Accident · No injuriesClosedGrumman AA-5B · Wentzville, MONTSB MKC81DCJ24Accident · No injuriesClosedCessna A188B · Arapahoe, NENTSB NYC81FFA19Accident · Minor injuriesClosedPiper PA-28 · Delanson, NYNTSB MKC81FCA22Accident · No injuriesClosedGrumman G-164A · Fisk, MONTSB MKC81DCD29Accident · No injuriesClosedPiper PA-25 · Indianola, IANTSB ATL81DKG37Accident · No injuriesClosedGrumman G-164B · Preston, GANTSB MIA81FLD60Accident · Serious injuriesClosedAeronca 7DC · Okeechobee, FLNTSB LAX81DXQ31Accident · Serious injuriesClosedMooney M20J · Reno, NVNTSB FTW81FRG57Accident · No injuriesClosedErco 415-C · Seguin, TXNTSB ATL81FKG36Accident · No injuriesClosedPiper J-3 · Jonesboro, GANTSB ANC81DAG57Accident · No injuriesClosedAeronca 15AC · Sterling, AKNTSB MKC81DCJ26Accident · No injuriesClosedCessna 188 · Rising City, NENTSB LAX81FA113Accident · 2 fatalClosedBellanca 7KCAB · King City, CANTSB DEN81FTE64Accident · Minor injuriesClosedBeech C24R · Broomfield, CONTSB MKC81DCD28Accident · No injuriesClosedCessna 172 · Kalona, IANTSB ATL81FKQ23Accident · No injuriesClosedAir Tractor AT-301 · Charleston, MSNTSB ATL81DLQ21Accident · No injuriesClosedBeech G35 · Lexington, KYNTSB ANC81DA086Accident · No injuriesClosedRobertson 207A · Ninilchik, AKNTSB LAX81DUJ79Accident · No injuriesClosedCessna 182P · Glendale, AZNTSB CHI81FEV28Accident · Minor injuriesClosedCassutt 3M · Mattoon, ILNTSB NYC81FHD32Accident · Minor injuriesClosedMooney M20E · Bridgeport, NJ