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 FTW74DPG06Accident · No injuriesClosedGrumman G-164 · Stuttgart, ARNTSB DEN74FQA10Accident · Minor injuriesClosedPiper PA-28 · Mountainair, NMNTSB CHI74FER01Accident · Minor injuriesClosedBeech 23 · Menomonie, WINTSB IAD74DKM05Accident · No injuriesClosedPiper PA-12 · Indian Trail, NCNTSB FTW74DRA06Accident · No injuriesClosedCessna 190 · Beaumont, TXNTSB DCA74RZ002Accident · 78 fatalClosedBoeing 707 · Papeete, FPNTSB CHI74FEI04Accident · 1 fatalClosedThorp T-18 · Marlboro, OHNTSB CHI74FEV03Accident · No injuriesClosedGrumman G-164A · Shirley, ILNTSB SEA74FTA03Accident · No injuriesClosedPiper PA-24 · Harlowton, MTNTSB NYC74FHA02Accident · No injuriesClosedCessna 150 · Sussex, NJNTSB SEA74FTA02Accident · No injuriesClosedPiper PA-28 · Flaxville, MTNTSB SEA74AS001Accident · 1 fatalClosedPiper PA-18 · Metolius, ORNTSB CHI74 EM04Accident · No injuriesClosedPiper PA-30 · West Branch, MINTSB IAD74FKW05Accident · Minor injuriesClosedCessna 150G · Chattanooga, TNNTSB IAD74DKW07Accident · No injuriesClosedVolksplane WE-1 · Rogersville, TNNTSB OAK74DVM02Accident · No injuriesClosedHiller Acft UH-12C · Gonzalez, CANTSB NYC74DNC07Accident · Minor injuriesClosedBell 47G · Weld, MENTSB LAX74FUJ06Accident · Minor injuriesClosedPiper PA-28 · Prescott, AZNTSB FTW74DPD01Accident · No injuriesClosedHiller UH-12A · Dublin, TXNTSB SEA74DTI04Accident · No injuriesClosedCessna 172 · Chester, MTNTSB MIA74FKG04Accident · No injuriesClosedCessna 150 · Dalton, GANTSB FTW74FPJ02Accident · Serious injuriesClosedBeech V35 · Oklahoma Cty, OKNTSB FTW74FRA02Accident · No injuriesClosedBoeing A75 · China, TXNTSB FTW74FPJ01Accident · Serious injuriesClosedPiper PA-25 · Tonkawa, OKNTSB CHI74AEC03Accident · No injuriesClosedCessna 150K · Owosso, MINTSB SEA74FYA03Accident · No injuriesClosedDouglas B-26B · Idaho Falls, IDNTSB LAX74DUJ09Accident · No injuriesClosedCessna 177A · Sierra Vsta, AZNTSB CHI74FEG01Accident · Minor injuriesClosedBeech E18S · Vandalia, OHNTSB CHI74AC004Accident · No injuriesClosedCessna 310I · Cleveland, OHNTSB MIA74RM002Accident · 2 fatalClosedPiper PA-23 · Nassau, Burkina FasoNTSB LAX74FUG02Accident · No injuriesClosedPiper PA-28 · Mecca, CANTSB LAX74DUJ03Accident · Minor injuriesClosedLet-Np-K L-13 · Phoenix, AZNTSB OAK74FXQ03Accident · 1 fatalClosedNimbus III-B · Sparks, NVNTSB NYC74FNC05Accident · No injuriesClosedErco 415-C · Highgate, VTNTSB CHI74 EC01Accident · No injuriesClosedCessna 182 · Saline, MINTSB SEA74FYA02Accident · Minor injuriesClosedAero Comdr 600S2R · Homedale, IDNTSB IAD74FKM03Accident · No injuriesClosedMitsubishi MU-2 · N.Wilkesboro, NCNTSB DEN74FTE03Accident · No injuriesClosedPiper PA-24 · Littleton, CONTSB CHI74FEV02Accident · No injuriesClosedCessna A188A · Bunker Hill, ILNTSB OAK74FVW01Accident · Serious injuriesClosedSchweizer SGS126 · Las Vegas, NVNTSB LAX74FUG09Accident · No injuriesClosedBeech F35 · Riverside, CANTSB IAD74FHD01Accident · Minor injuriesClosedBellanca 7GCBC · Selbyville, DENTSB CHI74DEA05Accident · No injuriesClosedPitts S1-D · Greentown, INNTSB NYC74FHJ02Accident · No injuriesClosedCessna 180H · Gilgo Beach, NYNTSB MIA74FKG01Accident · No injuriesClosedBeech B35 · Sapelo Island, GANTSB LAX74DUG01Accident · No injuriesClosedAeronca AR-11 · Elsinore, CANTSB IAD74AI002Accident · 3 fatalClosedCessna 172E · Southern Pines, NCNTSB DEN74DQA04Accident · No injuriesClosedCessna 177 · Cimarron, NMNTSB CHI74FEP01Accident · Serious injuriesClosedCessna 172M · Mantowish Wta, WINTSB FTW74DRG03Accident · No injuriesClosedCessna 188 · Raymondville, TX