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 OAK76DXQ59Accident · Minor injuriesClosedBeech A35 · Mountain Pass, NVNTSB NYC76FFA47Accident · Serious injuriesClosedCessna 172E · Poestenkill, NYNTSB MKC76FTG25Accident · No injuriesClosedPiper PA-28 · Minot, NDNTSB CHI76FEM50Accident · No injuriesClosedCessna 177RG · Muskegon, MINTSB ANC76DAH48Accident · Minor injuriesClosedPiper PA-14 · Wasilla, AKNTSB ANC76DAH42Accident · No injuriesClosedPiper PA-22 · Dillingham, AKNTSB ANC76DAH36Accident · No injuriesClosedPiper PA-11 · Peter'S Creek, AKNTSB NYC76AN112Accident · 3 fatalClosedPiper PA-28 · Zelienople, PANTSB MKC76FCG88Accident · No injuriesClosedPiper J-3 · Springfield, MONTSB FTW76DQG84Accident · Serious injuriesClosedCessna 177 · Groom, TXNTSB CHI76FEA49Accident · No injuriesClosedCessna 310D · Cutler, INNTSB SEA76DYE47Accident · No injuriesClosedBeech G35 · Pt Roberts, WANTSB MIA76FKG88Accident · No injuriesClosedGrumman G-164A · Hatley, GANTSB DEN76FTE82Accident · No injuriesClosedPiper PA-28 · Englewood, CONTSB DEN76FTE81Accident · Serious injuriesClosedCessna 140 · Englewood, CONTSB MKC76FCJ48Accident · No injuriesClosedCallair A-9 · Stromsburg, NENTSB LAX76DUM26Accident · No injuriesClosedPiper PA-36 · Brawley, CANTSB IAD76FKM43Accident · No injuriesClosedM-Saulnier MS894A · Cliffside, NCNTSB MIA76DKG87Accident · No injuriesClosedCessna 188B · Hawkinsville, GANTSB SEA76DYG65Accident · No injuriesClosedPiper J3C · Moses Lake, WANTSB MKC76DER79Accident · No injuriesClosedCessna A188B · Angus, MNNTSB MKC76DER78Accident · No injuriesClosedCessna 150L · Carlton, MNNTSB LAX76DUJ90Accident · No injuriesClosedCessna P206 · Roosevelt, AZNTSB MKC76FCG85Accident · Serious injuriesClosedCessna 177 · Eldon, MONTSB FTW76DQG98Accident · No injuriesClosedPiper J3C · Farwell, TXNTSB FTW76DPG76Accident · No injuriesClosedGrumman G-164A · Brinkley, ARNTSB DEN76AD057Accident · 2 fatalClosedPiper PA-28R · Aurora, CONTSB CHI76AC078Accident · 1 fatalClosedBeech C-45H · Detroit, MINTSB NYC76DFA46Accident · No injuriesClosedPiper J-3 · Carthage, NYNTSB FTW76FPA27Accident · No injuriesClosedCessna 172 · Waco, TXNTSB NYC76FNC53Accident · No injuriesClosedPiper PA-28 · Hollis Center, MENTSB MIA76DKT87Accident · No injuriesClosedGrum Amer AA1-B · La Belle, FLNTSB FTW76ORG71Accident · 2 fatalClosedCessna 337 · Amatlan, MexicoNTSB CHI76FEM49Accident · Serious injuriesClosedTaylorcraft BC12-D · Mancelona, MINTSB SEA76FYC62Accident · Serious injuriesClosedCessna 172M · Albany, ORNTSB NYC76FNE27Accident · Serious injuriesClosedGlobe GC-1B · Gardner, MANTSB NYC76FHJ24Accident · No injuriesClosedCessna 185E · New York, NYNTSB MKC76FCG83Accident · No injuriesClosedPiper PA-22 · Carthage, MONTSB CHI76DEP36Accident · No injuriesClosedPiper PA-28 · Ojibwa, WINTSB MKC76FCD55Accident · 1 fatalClosedAcroduster 1 · Council Bluffs, IANTSB CHI76FEI13Accident · Minor injuriesClosedCessna P206E · Put In Bay, OHNTSB NYC76FNA41Accident · No injuriesClosedPiper PA-18 · Chatham, MANTSB NYC76DFA45Accident · Minor injuriesClosedMooney M20E · Hopkinton, NYNTSB NYC76DFA44Accident · No injuriesClosedWaco UPF-7 · Hancock, NYNTSB FTW76DRG73Accident · No injuriesClosedCessna 150 · Port Mansfield, TXNTSB LAX76DUJ89Accident · No injuriesClosedBeech A24R · Prescott, AZNTSB DEN76FQA52Accident · No injuriesClosedCessna 177 · Albuquerque, NMNTSB DEN76DTE78Accident · Minor injuriesClosedN. American SNJ-4 · Trinidad, CONTSB SEA76DYA31Accident · No injuriesClosedPiper PA-24 · Burley, IDNTSB MKC76FCJ45Accident · No injuriesClosedGrumman G-164A · Minden, NE