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 ANC74DAG21Accident · No injuriesClosedCessna 180 · Egegik, AKNTSB SEA75DYA13Accident · Serious injuriesClosedPiper PA-18 · Tetonia, IDNTSB NYC75FHD14Accident · No injuriesClosedBeech 35 · Toughkenoman, PANTSB MIA75FKQ09Accident · Serious injuriesClosedPiper PA-25 · Charleston, MSNTSB MIA75FKG17Accident · No injuriesClosedGrumman G-164A · Perry, GANTSB MIA75DKJ14Accident · No injuriesClosedBeech A45 · Huntsville, ALNTSB IAD75FIG03Accident · 1 fatalClosedAmer Avco AA1-B · Laytonsville, MDNTSB MKC75FTG11Accident · Minor injuriesClosedBeech 23 · Minot, NDNTSB CHI75AC019Accident · 1 fatalClosedAeronca 7AC · Bloomer, WINTSB CHI75FEI12Accident · No injuriesClosedTaylorcraft BC12-D · Wharton, OHNTSB SEA75DYA19Accident · No injuriesClosedPiper PA-25 · Idaho Falls, IDNTSB NYC75DFJ07Accident · No injuriesClosedPiper PA-18 · Carlton, NYNTSB LAX75FUG07Accident · Minor injuriesClosedJameson SPL Sport · Chino, CANTSB FTW75FRJ05Accident · Serious injuriesClosedAero Comdr 600S2R · Lk Providence, LANTSB NYC75DFA08Accident · Minor injuriesClosedBeech 23 · North Bay, NYNTSB IAD75AI007Accident · 2 fatalClosedCessna 210 · Duck, NCNTSB OAK75DVA13Accident · No injuriesClosedCessna 210 · Tunnel Mdws, CANTSB IAD75FIG02Accident · No injuriesClosedStinson 108-2 · Laurel, MDNTSB DEN75FQD09Accident · No injuriesClosedBoeing A75N1 · Las Cruces, NMNTSB NYC75FNE06Accident · No injuriesClosedCessna 150G · Washington, MANTSB NYC75FFA07Accident · Minor injuriesClosedMooney M20G · Old Forge, NYNTSB SEA75DYA12Accident · No injuriesClosedHiller Acft UH-12 · Roberts, IDNTSB NYC75FHJ10Accident · No injuriesClosedN.American SNJ-2 · Flushing, NYNTSB MIA75FLD10Accident · Serious injuriesClosedCessna 172G · Wauchula, FLNTSB LAX75FUA07Accident · No injuriesClosedLemburg BD-4 · Fullerton, CANTSB FTW75DRG10Accident · No injuriesClosedCessna 182 · San Antonio, TXNTSB CHI75FEI11Accident · No injuriesClosedPiper PA-28 · Wadsworth, OHNTSB CHI75FEI10Accident · No injuriesClosedPiper PA-28 · Wadsworth, OHNTSB ANC75AA012Accident · 1 fatalClosedPiper PA-11 · Gulkana, AKNTSB NYC75FFJ05Accident · Minor injuriesClosedBeech T-34 · Syracuse, NYNTSB CHI75FEA06Accident · Serious injuriesClosedCessna 310N · Jeffersonvl, INNTSB SEA75DYC06Accident · No injuriesClosedPiper PA-28 · Ukiah, ORNTSB MIA75DKT09Accident · No injuriesClosedChampion 7GCB · West Palm Bch, FLNTSB MIA75AM013Accident · 2 fatalClosedBeech 95 · Leesburg, FLNTSB OAK75FVM10Accident · No injuriesClosedAero Comdr 600S2D · Soledad, CANTSB MKC75DER12Accident · No injuriesClosedBell 47G-2 · Meridan, MNNTSB MKC75FCG09Accident · Minor injuriesClosedCessna 177 · Mclouth, KSNTSB CHI75FEI05Accident · No injuriesClosedPiper PA-22 · Toronto, OHNTSB MIA75FLD07Accident · Serious injuriesClosedMooney M20F · Kissimmee, FLNTSB DEN75DQA07Accident · No injuriesClosedLuscombe 8E · San Felipe, NMNTSB CHI75FEP08Accident · 1 fatalClosed3 Roadable Bryan · Oshkosh, WINTSB LAX75FUA06Accident · No injuriesClosedCessna 150J · Hntgton Bch, CANTSB ANC75DAG09Accident · No injuriesClosedPiper PA-18 · Port Alswrth, AKNTSB ANC75AA008Accident · Minor injuriesClosedPiper PA-31 · Umiat, AKNTSB MKC75FCJ15Accident · No injuriesClosedPiper PA-25 · Mitchell, NENTSB DEN75FTE12Accident · No injuriesClosedPiper PA-23 · Grand Jctn, CONTSB SEA75FYI02Accident · No injuriesClosedPiper PA-32 · Bend, ORNTSB MKC75FCJ14Accident · No injuriesClosedBeech V35 · Scottsbluff, NENTSB ANC75DAG11Accident · Serious injuriesClosedBellanca 7GCB · Kodiak, AKNTSB OAK75FXQ06Accident · No injuriesClosedPiper PA-28 · Carson City, NV