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 SEA81FA010Accident · 1 fatalClosedAero Comdr 685 · Ashland, ORNTSB NYC81FNA05Accident · No injuriesClosedPiper PA-28 · Norwood, MANTSB SEA81FYM11Accident · No injuriesClosedCessna 182P · Orchards, WANTSB CHI81DEE11Accident · No injuriesClosedCessna 414 · Wheeling, ILNTSB MIA81FLA07Accident · No injuriesClosedLuscombe 8A · Macclenny, FLNTSB LAX81FJA04Accident · Serious injuriesClosedCessna 182H · Haleiwa, HINTSB MIA81FLD18Accident · 1 fatalClosedKnight Twst 01 · Winter Haven, FLNTSB ATL81FLQ07Accident · Minor injuriesClosedPiper PA-23 · Louisville, KYNTSB ATL81FLJ01Accident · No injuriesClosedCessna 152 · Fort Bragg, NCNTSB LAX81FXQ04Accident · Serious injuriesClosedPiper PA-32 · Carson City, NVNTSB ATL81FLG07Accident · No injuriesClosedCessna 150H · Greer, SCNTSB MKC81FA009Accident · 1 fatalClosedCessna 305A · Denison, IANTSB FTW81FA013Accident · 2 fatalClosedDouglas DC-7B · Pecos, TXNTSB NYC81FHA04Accident · Minor injuriesClosedCessna 172 · Andover, NJNTSB LAX81FUJ11Accident · 1 fatalClosedBellanca 8KCAB · Bouse, AZNTSB MIA81DKT21Accident · No injuriesClosedMurray Air MA-1 · Palmdale, FLNTSB CHI81FEC06Accident · Minor injuriesClosedCessna 421B · Detroit, MINTSB FTW81DRD07Accident · Minor injuriesClosedPiper PA-32 · Loreauville, LANTSB CHI81FEE09Accident · No injuriesClosedCessna 152 · Crystal Lake, ILNTSB MKC81DCJ03Accident · No injuriesClosedPiper PA-15 · Cambridge, NENTSB CHI81FEC05Accident · Serious injuriesClosedStinson L-5 · New Hudson, MINTSB NYC81FA011Accident · 4 fatalClosedCessna 177B · Bridgeport, NJNTSB ATL81FLQ05Accident · No injuriesClosedHelio Acft HT-295 · Mt Sterling, KYNTSB FTW81FPD05Accident · Minor injuriesClosedPiper PA-24 · Godley, TXNTSB MIA81DKT10Accident · No injuriesClosedAero Comdr 560F · Naples, FLNTSB LAX81FA015Accident · 2 fatalClosedPiper PA-38 · Santa Rosa, CANTSB NYC81FGM06Accident · Serious injuriesClosedCherokee RM-A-1 · Eighty Four, PANTSB LAX80DUJ22Accident · No injuriesClosedPiper PA-28 · Kingman, AZNTSB CHI81FA006Accident · 2 fatalClosedPiper PA-28 · Fremont, MINTSB ATL81FID02Accident · Minor injuriesClosedCessna 150G · Roanoke, VANTSB MIA81FLD08Accident · Minor injuriesClosedStinson 108-2 · Clearwater, FLNTSB FTW81FPD02Accident · No injuriesClosedRepublic RC-3 · Hurst, TXNTSB ATL81FIG02Accident · Serious injuriesClosedAerosport Quail · Laytonsville, MDNTSB ATL81FA013Accident · 2 fatalClosedCessna T210N · Baxley, GANTSB MKC81DCJ01Accident · No injuriesClosedCessna 175A · Broken Bow, NENTSB CHI81FEE05Accident · No injuriesClosedMooney M20E · Chicago, ILNTSB MIA81FLD07Accident · 1 fatalClosedTern II · Ocoee, FLNTSB FTW81FQA06Accident · No injuriesClosedCessna 206 · Farmington, NMNTSB NYC81FHD05Accident · No injuriesClosedPiper PA-28 · Bridgeport, NJNTSB SEA81DYA03Accident · No injuriesClosedBellanca 7KCAB · Council, IDNTSB NYC81FFA02Accident · Serious injuriesClosedPiper PA-28 · Lake Placid, NYNTSB FTW81FA007Accident · Serious injuriesClosedBell 212 · Galveston, TXNTSB DEN81DTK02Accident · No injuriesClosedCessna 172 · Faith, SDNTSB CHI81FEX03Accident · Minor injuriesClosedBeech F33A · Indianapolis, INNTSB SEA81FYE04Accident · No injuriesClosedCessna 210P · Everett, WANTSB LAX81FVM02Accident · No injuriesClosedPiper PA-23 · San Carlos, CANTSB LAX81FVG02Accident · Minor injuriesClosedBellanca 7ECA · Elk Grove, CANTSB ATL81DLQ04Accident · No injuriesClosedGreat Lakes Baby · Burnside, KYNTSB DEN80FTK01Accident · Minor injuriesClosedCessna 414 · Corsica, SDNTSB SEA81FYP03Accident · Minor injuriesClosedCessna TU206G · Salmon, ID