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 LAX79FVG75Accident · Serious injuriesClosedPiper PA-28 · Rio Linda, CANTSB FTW79IA103Incident · No injuriesClosedCessna 421B · Friendswood, TXNTSB DEN79DTE79Accident · No injuriesClosedCessna 172 · Dove Creek, CONTSB ANC79DAG91Accident · No injuriesClosedPiper PA-18 · Dillingham, AKNTSB MIA79FKQ27Accident · No injuriesClosedCessna A188B · Sledge, MSNTSB ANC79DAG95Accident · No injuriesClosedCessna 305A · Iliamna, AKNTSB IAD79FID29Accident · Minor injuriesClosedPiper PA-28 · Urbanna, VANTSB ANC79DAG97Accident · Minor injuriesClosedPiper J-3 · Shrode Lake, AKNTSB MKC79DCD35Accident · No injuriesClosedCessna 152 · Mt Pleasant, IANTSB NYC79FNC49Accident · Minor injuriesClosedPiper PA-22 · Bangor, MENTSB SEA79DYE50Accident · Minor injuriesClosedDehavilland Moth · Martha Lake, WANTSB SEA79DYE47Accident · No injuriesClosedNavion A · Snohomish, WANTSB MKC79DER66Accident · No injuriesClosedPiper PA-25 · Walker, MNNTSB IAD79FID28Accident · No injuriesClosedWeimer RV3 · Hanover, VANTSB FTW79FPM13Accident · Minor injuriesClosedPiper PA-38 · Mannford, OKNTSB ANC79DAG89Accident · No injuriesClosedCessna 180H · Valdez, AKNTSB MIA79FA115Accident · 2 fatalClosedCessna 336 · San Juan, PRNTSB CHI79FA067Accident · 2 fatalClosedBeech 95-B55 · Kinross, MINTSB LAX79DVG72Accident · Minor injuriesClosedHelio Acft H-395 · Woodland, CANTSB FTW79FPD37Accident · No injuriesClosedCessna 140 · Wichita Falls, TXNTSB NYC79FFA33Accident · Serious injuriesClosedCessna 172M · Schroon Lake, NYNTSB MKC79FCG74Accident · No injuriesClosedCessna 150E · Pleasant Hill, MONTSB MKC79DCD39Accident · No injuriesClosedCessna 172B · Council Bluffs, IANTSB MIA79FKQ24Accident · No injuriesClosedCessna 188 · Water Valley, MSNTSB NYC79FHA21Accident · Serious injuriesClosedCessna 170A · Sussex, NJNTSB NYC79FA080Accident · 1 fatalClosedRyan PT-22 · Pittstown, NJNTSB LAX79FA069Accident · Serious injuriesClosedSchweizer SGS126 · Rosamond, CANTSB ANC79DAG83Accident · No injuriesClosedPiper PA-18 · Gulkana, AKNTSB NYC79FNA28Accident · No injuriesClosedBellanca 8GCBC · Plymouth, MANTSB MKC79DCJ37Accident · Minor injuriesClosedPiper PA-28 · Hartington, NENTSB IAD79FID27Accident · No injuriesClosedStarduster SA300 · Weirwood, VANTSB DEN79FA056Accident · 6 fatalClosedPiper PA-34 · Wendover, UTNTSB ANC79DAG86Accident · No injuriesClosedTaylorcraft F-19 · Kenai, AKNTSB FTW79FA101Accident · 2 fatalClosedCessna A185F · Westwego, LANTSB NYC79DNC79Accident · No injuriesClosedPiper PA-22 · Alexander, MENTSB LAX79DVA57Accident · No injuriesClosedCessna 180 · Gustine, CANTSB CHI79FEP74Accident · 1 fatalClosedPitts Spcl S1S · Camp Douglas, WINTSB LAX79DVA58Accident · No injuriesClosedRockwell IN 690A · Castle Afb, CANTSB NYC79FGM42Accident · No injuriesClosedBeech B-24R · Youngsville, PANTSB MKC79DCJ35Accident · No injuriesClosedCessna 177RG · North Platte, NENTSB MIA79FA112Accident · 1 fatalClosedPiper PA-28 · Canton, GANTSB CHI79FET28Accident · No injuriesClosedPiper PA-28 · Crown Point, INNTSB CHI79FEC41Accident · Serious injuriesClosedMaule M-5 · Owosso, MINTSB ANC79DAG79Accident · No injuriesClosedDehavilland DHC-2 · Mcgrath, AKNTSB SEA79DYE39Accident · Minor injuriesClosedBeech B24R · Burton, WANTSB FTW79FRG51Accident · Serious injuriesClosedAir Tractor AT-301 · Taft, TXNTSB SEA79DYA27Accident · No injuriesClosedAir Tractor AT-301 · Newdale, IDNTSB MIA79FKG59Accident · Minor injuriesClosedChampion 7ECA · Social Circle, GANTSB LAX79FUQ42Accident · Minor injuriesClosedCessna 177 · Santa Barbara, CANTSB ANC79DA079Accident · No injuriesClosedCessna 182 · Bornite, AK