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 IAD76FLJ15Accident · No injuriesClosedCessna 305A · Elizabethtown, NCNTSB DEN76FQA22Accident · Minor injuriesClosedBernardin MS-2 · Albuquerque, NMNTSB ANC76DAG56Accident · No injuriesClosedStinson 108-2 · Gulkana, AKNTSB ANC76DAG52Accident · No injuriesClosedPiper PA-18 · Sleetmute, AKNTSB MIA76FKQ20Accident · No injuriesClosedCessna A188B · Inverness, MSNTSB OAK76AP018Accident · 1 fatalClosedChampion 7ECA · Winters, CANTSB CHI76FEV15Accident · Serious injuriesClosedCessna 170 · Enfield, ILNTSB SEA7LFYE18Accident · Serious injuriesClosedLake LA-4 · Alderwood Mnr, WANTSB MIA76FLD25Accident · No injuriesClosedBeech B35 · Sanford, FLNTSB FTW76DRD13Accident · No injuriesClosedCessna 185 · Golden Meadow, LANTSB FTW76AF029Accident · 1 fatalClosedBeech A45 · Houston, TXNTSB ANC76DAG59Accident · No injuriesClosedPiper PA-18 · Kodiak, AKNTSB ANC76AAG70Accident · No injuriesClosedPiper PA-18 · Iliamna, AKNTSB DEN76FQA19Accident · Minor injuriesClosedCessna 206 · Des Moines, NMNTSB MKC76AK026Accident · 1 fatalClosedBeech V35A · Russell, KSNTSB CHI76FEM16Accident · No injuriesClosedTaylorcraft BC12-D · Big Rapids, MINTSB NYC76AN039Accident · 1 fatalClosedPiper PA-28 · Westfield, NYNTSB MIA76DKJ24Accident · No injuriesClosedPiper PA-25 · Elkmont, ALNTSB NYC76DHA14Accident · Minor injuriesClosedCessna 140 · New Milford, PANTSB LAX7LFVA15Accident · No injuriesClosedBeech 95-A55 · Bakersfield, CANTSB SEA76FYE17Accident · 1 fatalClosedMini Cab Hawk · Maple Valley, WANTSB MIA76FLD23Accident · 1 fatalClosedKen Land KR-1 · Brooksville, FLNTSB ANC76DAG54Accident · No injuriesClosedCessna 185 · Tahneta Lake, AKNTSB SEA76FYG16Accident · No injuriesClosedGlobe GC-1B · Kennewick, WANTSB NYC76FHM12Accident · Serious injuriesClosedCessna 182 · Linden, NJNTSB NYC76FGM09Accident · Minor injuriesClosedMorrison Teenie · Greenville, PANTSB NYC76AN037Accident · 1 fatalClosedStinson 108-3 · Chenamgo Brg, NYNTSB MKC76AK021Accident · 2 fatalClosedBellanca 7GC · Garrison, MNNTSB MIA76DKJ23Accident · No injuriesClosedPipep PA-22 · Laceys Springs, ALNTSB LAX76DUJ33Accident · No injuriesClosedBeech B35 · Sedona, AZNTSB IAD76FIJ05Accident · Serious injuriesClosedBell 47G4 · Tams Mt, WVNTSB LAX76DUJ32Accident · No injuriesClosedGrumman G-164A · Buckeye, AZNTSB DEN76FTE28Accident · Minor injuriesClosedMooney M20E · Broomfield, CONTSB MKC76DER26Accident · No injuriesClosedGrum Amer AA5 · Pierz, MNNTSB MIA76FLG17Accident · Serious injuriesClosedBantam W-3 · Georgetown, SCNTSB MIA76AM026Accident · No injuriesClosedDouglas DC-8 · Jamaica, NYNTSB FTW76FRJ10Accident · Serious injuriesClosedPiper PA-28 · Jena, LANTSB ANC76AA039Accident · No injuriesClosedGrumman G-21A · Kodiak, AKNTSB OAK76DVD12Accident · No injuriesClosedCessna 150 · Fremont, CANTSB MIA76DLD19Accident · No injuriesClosedPiper PA-28 · Bradenton, FLNTSB MIA76AM025Accident · 2 fatalClosedPiper PA-28R · Grenada, MSNTSB MIA76FLD17Accident · Minor injuriesClosedPiper PA-28 · Okeechobee, FLNTSB LAX76DWJ25Accident · No injuriesClosedCessna 150 · Seligman, AZNTSB NYC76FGT04Accident · Minor injuriesClosedPiper PA-22 · Centre Hall, PANTSB LAX76DUM05Accident · No injuriesClosedCessna 150 · Bombay Beach, CANTSB CHI76FEE20Accident · Serious injuriesClosedCessna 172 · Belvidere, ILNTSB MKC76DCQ17Accident · No injuriesClosedPiper PA-28 · Hoxie, KSNTSB IAD76DLQ08Accident · Serious injuriesClosedOsprey 1-V · Paducah, KYNTSB IAD76FIJ03Accident · Serious injuriesClosedCessna 150 · Cottageville, WVNTSB MIA76FKT20Accident · Serious injuriesClosedMooney M20C · Boca Raton, FL