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 ANC76DAH28Accident · No injuriesClosedPiper PA-18 · Gakona, AKNTSB MIA76DKJ77Accident · Minor injuriesClosedBell 47G-4 · Natural Bridge, ALNTSB FTW76FPM27Accident · Minor injuriesClosedAmer Avco AA1-B · Jenks, OKNTSB SEA76FYG58Accident · Serious injuriesClosedPiper PA-28 · Lake Wenatchee, WANTSB SEA76FYA29Accident · Serious injuriesClosedLaister LK-10B · Howe, IDNTSB FTW76FPG71Accident · Serious injuriesClosedBuhl LA-1 · Jacksonville, ARNTSB CHI76DEG17Accident · No injuriesClosedPiper PA-25 · Fletcher, OHNTSB SEA76FYI21Accident · No injuriesClosedAeronca 65C · Elmira, ORNTSB OAK76DVA73Accident · No injuriesClosedCessna 180 · Turlock, CANTSB OAK76AP058Accident · 1 fatalClosedMaule M5-220 · Stonyfort, CANTSB NYC76DFA42Accident · No injuriesClosedBeech A23 · Woodgate, NYNTSB CHI76AC074Accident · 1 fatalClosedCommonwlth 185 · North Liberty, INNTSB MKC76FCA29Accident · Serious injuriesClosedPiper PA-28 · Frisbee, MONTSB CHI76DEA44Accident · No injuriesClosedCessna A188B · Vincennes, INNTSB ANC76DAH24Accident · No injuriesClosedPiper PA-18 · Gulkana, AKNTSB MIA76FKG77Accident · Minor injuriesClosedCessna 150L · Jessup, GANTSB FTW76AF106Accident · No injuriesClosedCessna 180 · Golden Meadow, LANTSB DEN76DQA51Accident · Minor injuriesClosedMeyers 200 · Tucumcari, NMNTSB CHI76AC073Accident · 1 fatalClosedBeech 95-C55 · Chicago, ILNTSB MIA76FLT03Accident · Minor injuriesClosedCessna A188B · Byhalia, MSNTSB IAD76AI077Accident · No injuriesClosedPiper PA-32R · Davis, WVNTSB LAX76FUQ43Accident · No injuriesClosedHawker Mkii · Mojave, CANTSB SEA76AS056Accident · 4 fatalClosedCessna 170 · Medford, ORNTSB OAK76DXQ51Accident · No injuriesClosedCessna 150 · Reno, NVNTSB NYC76FHA38Accident · Serious injuriesClosedNavion F · Frederick, PANTSB LAX76FUJ86Accident · Minor injuriesClosedPiper PA-28 · Flagstaff, AZNTSB FTW76AF104Accident · 2 fatalClosedBeech D-17S · Amarillo, TXNTSB IAD76FID29Accident · No injuriesClosedPiper PA-28 · Windsor, VANTSB MIA76FKT86Accident · No injuriesClosedCessna 175 · W.Palm Beach, FLNTSB LAX76FUJ85Accident · No injuriesClosedPiper PA-25 · Winslow, AZNTSB NYC76FHA40Accident · No injuriesClosedPiper PA-12 · Whitehouse, NJNTSB LAX76FUQ41Accident · No injuriesClosedChampion 7ECA · Frazier Park, CANTSB NYC76DHA39Accident · No injuriesClosedPiper PA-28 · Pittstown, NJNTSB MIA76DLD62Accident · No injuriesClosedTaylorcraft DCO-65 · Cypress Garden, FLNTSB IAD76AI076Accident · 2 fatalClosedPiper PA-23 · West Liberty, KYNTSB CHI76AC070Accident · 1 fatalClosedGrum Amer AA-5 · Crystal Falls, MINTSB ANC76DAH31Accident · Minor injuriesClosedCessna 185 · Cantwell, AKNTSB ANC76AA099Accident · 2 fatalClosedPiper J3C · Otto Lake, AKNTSB NYC76FHA37Accident · Minor injuriesClosedCessna 172 · Blairstown, NJNTSB ANC76DAA42Accident · Serious injuriesClosedPiper PA-22 · Tok, AKNTSB FTW76FPA25Accident · Serious injuriesClosedBeech 19A · Plano, TXNTSB CHI76FEA39Accident · Serious injuriesClosedPiper PA-25 · Tipton, INNTSB NYC76FGM34Accident · No injuriesClosedBrantly B-2B · Greenburg, PANTSB FTW76FPA24Accident · Minor injuriesClosedCessna 175 · Dallas, TXNTSB DEN76FTE67Accident · No injuriesClosedCessna 140 · Byers, CONTSB NYC76FNE24Accident · Minor injuriesClosedCessna 150G · Westboro, MANTSB OAK76DVW28Accident · Serious injuriesClosedBellanca 8GCBC · Beatty, NVNTSB NYC76DFJ25Accident · Minor injuriesClosedPiper PA-28 · Marathon, NYNTSB NYC76AM1O2Accident · 2 fatalClosedBeech B35 · Hyannis, MANTSB MIA76FKG71Accident · Serious injuriesClosedPiper PA-28 · Chamblee, GA