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 LAX75DUJ05Accident · No injuriesClosedPilatus PC-6 · Mt Baldy, AZNTSB MIA75FKT03Accident · Serious injuriesClosedPiper PA-24 · Ft Lauderdale, FLNTSB LAX75FUD01Accident · No injuriesClosedSpartan 7W · Hawthorne, CANTSB DEN75AQA02Accident · Minor injuriesClosedCessna 172G · Wagon Mound, NMNTSB CHI75DEA01Accident · No injuriesClosedCessna 172 · Anderson, INNTSB SEA75DYE01Accident · No injuriesClosedCessna 172 · Lopez, WANTSB SEA75AS001Accident · 4 fatalClosedBellanca 14-132 · Bremerton, WANTSB NYC75FNA03Accident · No injuriesClosedCorbin Baby ACE C · Tewksbury, MANTSB FTW75ORG07Accident · No injuriesClosedCessna P206A · Coahuila, MexicoNTSB CHI75DEM01Accident · No injuriesClosedSchemp SHI · Frankfort, MINTSB IAD75FLQ01Accident · No injuriesClosedCessna 140 · Symsonia, KYNTSB MIA75FLD05Accident · Serious injuriesClosedPiper PA-24 · Orlando, FLNTSB SEA75DYA02Accident · Minor injuriesClosedBeech B19 · Yellowpine, IDNTSB NYC75FGT02Accident · No injuriesClosedNavion A · Wellsboro, PANTSB MIA75DLT01Accident · No injuriesClosedCessna 177 · Coldwater, MSNTSB CHI75FET01Accident · Minor injuriesClosedTeenie Two TT1 · Watervliet, MINTSB FTW75DPG01Accident · No injuriesClosedGrumman G-164A · Walnut Ridge, ARNTSB OAK75AP001Accident · 1 fatalClosedCessna A150L · Yuba City, CANTSB MKC750TG04Accident · No injuriesClosedAmer Avco AA-5 · Perrault Fls, CanadaNTSB LAX75DUJ01Accident · Serious injuriesClosedBensen B8M · Mesa, AZNTSB ANC75AA001Accident · Minor injuriesClosedHiller Acft UH-12E · Ketchikan, AKNTSB UNK74X0113Accident · Serious injuriesClosedPiper PA-28 · Bimini, Burkina FasoNTSB CHI74FER05Accident · No injuriesClosedCessna 170A · Horse Creek, WINTSB MKC74FCG47Accident · Serious injuriesClosedAeronca 11AC · Humphreys, MONTSB LAX74AL088Accident · 4 fatalClosedNavion A-1 · Pismo Beach, CANTSB IAD74FLQ40Accident · Minor injuriesClosedPiper PA-22 · Elizabethtown, KYNTSB FTW74FRH02Accident · Serious injuriesClosedBede 5J · Corpus Chrsti, TXNTSB MKC74DER64Accident · No injuriesClosedBeech A36 · Warroad, MNNTSB MIA74FLE06Accident · Minor injuriesClosedBede BD4 · Orlando, FLNTSB MIA74FLA49Accident · Serious injuriesClosedHughes 269B · Jacksonville, FLNTSB FTW74DPG80Accident · No injuriesClosedAero Comdr A-9B · Grady, ARNTSB DEN74FTE92Accident · Serious injuriesClosedSchweizer SGS126 · Boulder, CONTSB MKC74DER62Accident · No injuriesClosedBeech N35 · Trimont, MNNTSB MIA74FKG88Accident · No injuriesClosedErco 415-E · Stockbridge, GANTSB DEN74FTE93Accident · No injuriesClosedPiper PA-18 · Lamar, CONTSB ANC74AA084Accident · 1 fatalClosedPiper PA-23 · Kiana, AKNTSB OAK75DVD38Accident · No injuriesClosedCessna 140 · Hayward, CANTSB FTW74DQG70Accident · No injuriesClosedPiper PA-25 · Plainview, TXNTSB OAK74FVD37Accident · Minor injuriesClosedGlobe GC-1B · Sohoma, CANTSB NYC74FNE29Accident · Serious injuriesClosedEea Biplane · Danielson, CTNTSB MKC74FCD43Accident · No injuriesClosedMooney M20G · Paullina, IANTSB CHI74FEC50Accident · Serious injuriesClosedPiper PA-28 · Troy, MINTSB FTW74DPG78Accident · No injuriesClosedGrumman G-164A · Wheatley, ARNTSB MIA74AM102Accident · 2 fatalClosedPiper PA-23 · Merritt Is, FLNTSB DEN74FTE53Accident · No injuriesClosedPiper PA-28 · Strasburg, CONTSB OAK74DXQ44Accident · No injuriesClosedAeronca 7AC · Elko, NVNTSB MIA74FKQ24Accident · No injuriesClosedCessna A188B · Batesville, MSNTSB MIA74DKQ25Accident · No injuriesClosedCessna A188B · Benoit, MSNTSB FTW74FPG73Accident · Serious injuriesClosedCessna 172 · N.Little Rock, ARNTSB NYC74AN110Accident · 3 fatalClosedAerostar 600 · Perkasie, PA