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 SEA80FA049Accident · 4 fatalClosedCessna 177RG · Lopez, WANTSB NYC81FA087Accident · 2 fatalClosedAero Comdr 680E · New Windsor, NYNTSB DEN80FTE81Accident · Serious injuriesClosedKriket DK-1 · Ellicott, CONTSB ANC81DAG09Accident · No injuriesClosedPiper PA-14 · Talkeetna, AKNTSB ANC80DA100Accident · Minor injuriesClosedCessna 207A · Karluk, AKNTSB NYC80FA088Accident · No injuriesClosedPiper PA-28 · Montgomeryvill, PANTSB MKC80DCJ33Accident · Minor injuriesClosedUniv Acft 108-2 · Omaha, NENTSB MIA80FA101Accident · 1 fatalClosedPiper J3L-65 · Ocala, FLNTSB MIA80DLE02Accident · No injuriesClosedCessna 172 · Anclote Key, FLNTSB ATL80FLQ28Accident · Minor injuriesClosedPiper PA-28 · Morehead, KYNTSB ATL80DKG25Accident · No injuriesClosedCessna 172A · Athens, GANTSB FTW81DPD45Accident · No injuriesClosedCessna 182 · Bangs, TXNTSB ANC80FA099Accident · Serious injuriesClosedCessna 207 · Fairbanks, AKNTSB ATL80FA097Accident · 1 fatalClosedPiper PA-28R · Troy, NCNTSB CHI80FEI42Accident · No injuriesClosedPiper PA-24 · Sandusky, OHNTSB ATL80FA092Accident · 1 fatalClosedPiper PA-31 · Culpeper, VANTSB MKC80DCG45Accident · No injuriesClosedPiper PA-28 · Albany, MONTSB LAX80FVW26Accident · Serious injuriesClosedCessna T337C · Stove Pipe, CANTSB LAX80FUQ24Accident · No injuriesClosedPiper PA-23 · Mojave, CANTSB ATL80DKW20Accident · No injuriesClosedPiper PA-12 · Crossville, TNNTSB ANC80DA098Accident · No injuriesClosedCessna U206 · Nondalton, AKNTSB NYC80FNC45Accident · Minor injuriesClosedStinson 108-2 · Windham, NHNTSB FTW80FPG65Accident · Serious injuriesClosedCessna 150L · Clarksville, ARNTSB CHI80FA067Accident · 1 fatalClosedAero Comdr 680FL · Chicago, ILNTSB CHI80DEE49Accident · No injuriesClosedGrumman AA-5A · Greenwood, ILNTSB SEA81FYM61Accident · No injuriesClosedGrum Amer AA-5A · Newburg, ORNTSB FTW80FQA32Accident · No injuriesClosedCessna 172RG · Albuquerque, NMNTSB MKC80DCQ33Accident · No injuriesClosedCessna 188 · Protection, KSNTSB DEN80FTM38Accident · Minor injuriesClosedCessna 210 · Parowan, UTNTSB FTW80DRA47Accident · Minor injuriesClosedPiper PA-22 · La Porte, TXNTSB DEN80DTE75Accident · Serious injuriesClosedQuickie KIT214 · Ft Collins, CONTSB ATL80FIG17Accident · Minor injuriesClosedNavion G · Chester, MDNTSB ANC81DAG16Accident · Minor injuriesClosedPiper PA-18 · Big Lake, AKNTSB LAX80FUJ98Accident · Serious injuriesClosedScamp Turben · Phoenix, AZNTSB NYC80FGT20Accident · Serious injuriesClosedSchreder HP-11A · Julian, PANTSB MIA80FLD94Accident · Serious injuriesClosedPiper PA-28 · Dover, FLNTSB LAX80DUJ94Accident · No injuriesClosedPiper PA-36 · Tacna, AZNTSB ANC80DAA25Accident · No injuriesClosedBell 206B · Deadhorse, AKNTSB LAX80FUM27Accident · No injuriesClosedCessna 150L · Calexico, CANTSB DEN80FTK20Accident · Minor injuriesClosedCessna 172 · Kyle, SDNTSB MIA81DKT58Accident · No injuriesClosedGrumman G-164 · South Bay, FLNTSB MIA80FLD95Accident · Serious injuriesClosedCessna 177 · Englewood, FLNTSB NYC80FHA30Accident · Serious injuriesClosedBoeing B75N1 · Erwinna, PANTSB MIA80FLD92Accident · No injuriesClosedPiper PA-38 · Ft.Pierce, FLNTSB MIA80FKT54Accident · Serious injuriesClosedCessna 172 · Labelle, FLNTSB LAX80FUM26Accident · 1 fatalClosedAir Tractor AT-301 · Brawley, CANTSB LAX80FA136Accident · 1 fatalClosedHughes 369HS · Las Vegas, NVNTSB ATL80FKQ22Accident · No injuriesClosedGrumman G-164 · Clarksdale, MSNTSB CHI80FEE45Accident · No injuriesClosedLake LA-4 · Highland Park, ILNTSB SEA80FYM57Accident · No injuriesClosedCessna 182C · Orchards, WA