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 MIA74DLA42Accident · No injuriesClosedPiper PA-28 · Branford, FLNTSB CHI74AC085Accident · 1 fatalClosedCessna 120 · Verona, WINTSB OAK74DVG49Accident · No injuriesClosedGrumman G-164 · Grimes, CANTSB DEN74FQA41Accident · 1 fatalClosedEaa Biplane Kister · Albuquerque, NMNTSB DEN74FQA40Accident · Serious injuriesClosedAeronca 7BCM · Pena Blanca, NMNTSB CHI74FEC41Accident · No injuriesClosedNord Stampe SV4C · Grosse Ile, MINTSB SEA74DYG30Accident · No injuriesClosedCessna 305A · Buena, WANTSB CHI74FEV48Accident · No injuriesClosedPiper PA-28 · Canton, OHNTSB CHI74FEC39Accident · Minor injuriesClosedSmith EOS-1 · Pontiac, MINTSB FTW74DQG52Accident · No injuriesClosedPaulicks B-8 · Slaton, TXNTSB NYC74AN090Accident · 1 fatalClosedCessna 150 · Boothbay Harbr, MENTSB IAD74FLT14Accident · No injuriesClosedCessna 182K · Dyersburg, TNNTSB SEA74DYG29Accident · No injuriesClosedWeatherly 201 · Nezperce, IDNTSB MKC74FCQ35Accident · No injuriesClosedCessna 177 · Beaumont, KSNTSB IAD74FID32Accident · No injuriesClosedForney F1A · Tappahannock, VANTSB MIA74FKG75Accident · Minor injuriesClosedCessna 182G · Savannah, GANTSB MIA74FLD82Accident · No injuriesClosedNa Rockwell 600S2R · Sebastian, FLNTSB IAD74DIJ14Accident · Serious injuriesClosedStits SA3B · Rainelle, WVNTSB CHI74FEP44Accident · 1 fatalClosedBeech T34B · Wautoma, WINTSB CHI74FEC37Accident · Serious injuriesClosedCessna 120 · Flushing, MINTSB SEA74DYG28Accident · No injuriesClosedCessna A188B · Nez Perce, IDNTSB OAK74DVG47Accident · No injuriesClosedGrumman G-164 · Grimes, CANTSB IAD74FID31Accident · Minor injuriesClosedPiper PA-28 · Richmond, VANTSB MIA74FKG71Accident · Minor injuriesClosedBeech E18S · Atlanta, GANTSB DEN74FTC31Accident · Minor injuriesClosedAmer Avco AA5 · Cheyenne, WYNTSB CHI74FET18Accident · Minor injuriesClosedTeenie TWO · Watervliet, MINTSB SEA74DYA28Accident · No injuriesClosedPiper PA-25 · Malad City, IDNTSB MIA74FLGI7Accident · Minor injuriesClosedCessna 172E · Beaufort, SCNTSB ANC74FAG99Accident · No injuriesClosedStinson 108-1 · Cantwell, AKNTSB CHI74AC084Accident · 3 fatalClosedPiper PA-28 · Columbus, OHNTSB LAX74DUM24Accident · Minor injuriesClosedPiper PA-28 · Fallbrook, CANTSB FTW74AF072Accident · 2 fatalClosedPiper PA-28 · Addicks, TXNTSB NYC74AN086Accident · No injuriesClosedCessna 310Q · Worcester, MANTSB OAK74FVG38Accident · No injuriesClosedBensen B8M · Davis, CANTSB FTW74FQD16Accident · 1 fatalClosedGibson Teenie · El Paso, TXNTSB SEA74FTA22Accident · No injuriesClosedTaylorcraft DCO-65 · Fishtail, MTNTSB LAX74FUQ33Accident · Serious injuriesClosedStinson 108 · Santa Paula, CANTSB SEA74DTA23Accident · No injuriesClosedBellanca 7GCBC · Malta, MTNTSB LAX74DUJ49Accident · No injuriesClosedBell 47G-5 · Yuma, AZNTSB DEN74DTE65Accident · No injuriesClosedPiper PA-18A · Sheridan Lk, CONTSB MKC74DER46Accident · No injuriesClosedGlobe GC-1B · Buffalo, MNNTSB LAX74FUJ52Accident · No injuriesClosedLet-Np-K L-13 · Phoenix, AZNTSB LAX74AL068Accident · 4 fatalClosedMooney M20A · San Frnando, CANTSB CHI74AC082Accident · 1 fatalClosedAmer Avco AA1-A · Rattlesnk Is, OHNTSB CHI74AC081Accident · 1 fatalClosedRaven S-50A · Cambridge, OHNTSB MKC74FCJ34Accident · No injuriesClosedMooney M20C · Gordon, NENTSB MKC74DCG26Accident · No injuriesClosedPiper PA-28 · Warrensburg, MONTSB LAX74FUA20Accident · Serious injuriesClosedCessna 140 · Hntngtn Bch, CANTSB LAX74AL066Accident · 1 fatalClosedCessna 182N · Arlington, CANTSB DEN74DTE61Accident · Minor injuriesClosedBeech V35A · Crestd Butte, CO