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 SEA76DYA46Accident · Minor injuriesClosedPiper PA-22 · Burley, IDNTSB FTW75DQD25Accident · No injuriesClosedPiper PA-28 · Sheffield, TXNTSB NYC75FHD47Accident · No injuriesClosedCessna 310N · Trenton, NJNTSB NYC75AN114Accident · Minor injuriesClosedCessna 180 · Greenville, MENTSB MKC75FCG49Accident · Serious injuriesClosedHughes 269A · Rossville, KSNTSB LAX75FUQ27Accident · No injuriesClosedGR Lakes 2T-1A2 · Lancaster, CANTSB SEA75DYC40Accident · Serious injuriesClosedBell 47G-2A · Corvallis, ORNTSB CHI75FEP64Accident · Minor injuriesClosedBeech A36 · Wausaw, WINTSB CHI75FEP60Accident · No injuriesClosedCessna 150L · Milwaukee, WINTSB MIA75FKG75Accident · No injuriesClosedCessna 188A · Adel, GANTSB FTW75FPG78Accident · Minor injuriesClosedAero Comdr 600S2R · Indian Switch, ARNTSB OAK75AP054Accident · 1 fatalClosedLake LA-4 · Red Bluff, CANTSB LAX75DUJ86Accident · Minor injuriesClosedPiper PA-28 · Seligman, AZNTSB MIA75AM083Accident · 1 fatalClosedCessna 421A · Atlanta, GANTSB DEN75FTE72Accident · No injuriesClosedPiper PA-28 · Littleton, CONTSB CHI75FEP55Accident · No injuriesClosedN.American Navion · Shawano, WINTSB CHI75DEE64Accident · Serious injuriesClosedTaylorcraft BC12-D · Chicago Hts, ILNTSB NYC75FGM39Accident · Minor injuriesClosedPiper PA-28 · Marienville, PANTSB MKC75DCG48Accident · No injuriesClosedGrum Amer AA-5B · Edwards, MONTSB MIA75FKQ33Accident · Minor injuriesClosedPitts S1S · Clarksdale, MSNTSB FTW75FRA29Accident · Serious injuriesClosedBede BD4 · Bay City, TXNTSB CHI75FEE62Accident · No injuriesClosedPiper PA-24 · Dixon, ILNTSB OAK75DVW20Accident · Minor injuriesClosedLaister LP-15 · Hidden Hills, NVNTSB OAK75DJY05Accident · Minor injuriesClosedCessna 150 · Clark Afb, RPNTSB CHI75FEE61Accident · No injuriesClosedCessna 185 · Minooka, ILNTSB MIA75AM082Accident · 1 fatalClosedPiper PA-22 · Conway, SCNTSB NYC75DNC33Accident · No injuriesClosedPiper PA-25 · Middlebury, VTNTSB FTW75DPG67Accident · No injuriesClosedPiper PA-25 · Des Arc, ARNTSB FTW75FRD58Accident · No injuriesClosedGrumman G-164A · Iowa, LANTSB DEN75DQA45Accident · No injuriesClosedCessna 180 · Cimarron, NMNTSB DEN75AD057Accident · No injuriesClosedCessna U206E · Farmington, NMNTSB ANC75AA085Accident · 1 fatalClosedDehavilland DHC-3 · Anchorage, AKNTSB MKC75FCG46Accident · Minor injuriesClosedPiper PA-22 · Kansas City, MONTSB MKC75FCJ5KAccident · Minor injuriesClosedCessna 210E · Omaha, NENTSB LAX75DUJ81Accident · No injuriesClosedCessna 210 · Douglas, AZNTSB NYC75FNE37Accident · No injuriesClosedAeronca 7AC · Gardner, MANTSB MIA75FLA46Accident · No injuriesClosedCessna 310 · Pensacola, FLNTSB IAD75AI060Accident · 2 fatalClosedCessna 172 · Tullahoma, TNNTSB FTW75DPG88Accident · No injuriesClosedGrumman G-164A · Dumas, ARNTSB CHI75FEP54Accident · Minor injuriesClosedFlaglor-Hag H-1 · Merrill, WINTSB CHI75DET20Accident · Minor injuriesClosedAdams SIDE-W · Columbia City, INNTSB CHI75AC088Accident · 1 fatalClosedStinson 108-2 · Jackson, MINTSB SEA75AS041Accident · 2 fatalClosedStinson 108-2 · Gimlet, IDNTSB OAK75DVG67Accident · No injuriesClosedGrumman G-164 · Wheatland, CANTSB NYC75FFA37Accident · Minor injuriesClosedPiper J3C-65 · Marlboro, NYNTSB ANC75DAG92Accident · Minor injuriesClosedCessna 172A · English Bay, AKNTSB SEA75FTA18Accident · No injuriesClosedCessna A188 · Denton, MTNTSB FTW75FRD57Accident · No injuriesClosedPiper PA-25 · Basile, LANTSB DEN75FQA41Accident · No injuriesClosedCessna 310J · Farmington, NMNTSB OAK75FJA11Accident · No injuriesClosedDehavilland DHC-3 · Honolulu, HI