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 ANC74DAA11Accident · No injuriesClosedCessna 180H · Fairbanks, AKNTSB SEA74DYE14Accident · No injuriesClosedCessna 150 · Federal Way, WANTSB SEA74AS008Accident · 2 fatalClosedLuscombe T-8F · Cottage Grov, ORNTSB MIA74FKG14Accident · No injuriesClosedGlobe GC-1B · Cordele, GANTSB MKC74DTK03Accident · No injuriesClosedCessna 172G · Monroe, SDNTSB FTW74DRG14Accident · 2 fatalClosedPiper PA-28 · Coahuila, MexicoNTSB FTW74DPG20Accident · Minor injuriesClosedCessna 172 · West Memphis, ARNTSB CHI74FEE14Accident · Minor injuriesClosedPiper PA-22 · Naperville, ILNTSB ANC74AA025Accident · 2 fatalClosedAeronca 11AC · Juneau, AKNTSB SEA74DVG12Accident · No injuriesClosedCessna 210C · Spokane, WANTSB ANC74AA023Accident · No injuriesClosedHiller Acft FH1100 · Umiat, AKNTSB LAX74FUQ11Accident · Minor injuriesClosedPiper PA-28 · Boron, CANTSB FTW74DPG11Accident · No injuriesClosedGrumman G-164A · Dewitt, ARNTSB OAK74DXQ06Accident · No injuriesClosedCessna 172 · Mammoth Lks, CANTSB CHI74DEP12Accident · Minor injuriesClosedPiper J-3 · Neena, WINTSB ANC74DAG19Accident · No injuriesClosedPiper PA-12 · Port Lions, AKNTSB MIA74DKJ13Accident · No injuriesClosedPiper PA-28 · Huntsville, ALNTSB ANC74DAG22Accident · No injuriesClosedTaylorcraft BC12-S · Kena, AKNTSB DEN74FTE14Accident · Minor injuriesClosedMooney M20E · Aspen, CONTSB CHI74DEE10Accident · No injuriesClosedJugman Bucker · S.Naperville, ILNTSB ANC74DAG15Accident · No injuriesClosedPiper PA-18S · Anchorage, AKNTSB DEN74DQA13Accident · No injuriesClosedMcdonald S-20 · Moriarty, NMNTSB DEN74DQA11Accident · No injuriesClosedCessna 150L · Moriarity, NMNTSB CHI74FEP06Accident · Minor injuriesClosedBeech C23 · Milwaukee, WINTSB CHI74FEE06Accident · No injuriesClosedCessna 337 · Rockford, ILNTSB CHI74AEE05Accident · Serious injuriesClosedPiper J-2 · Streamwood, ILNTSB OAK74FXQ04Accident · Minor injuriesClosedPiper PA-28 · Carson City, NVNTSB DEN74FTC06Accident · Serious injuriesClosedPiper PA-32 · Savery, WYNTSB MKC74DCJ05Accident · No injuriesClosedCessna 150J · North Platte, NENTSB FTW74FPM03Accident · No injuriesClosedHughes 269C · Shidler, OKNTSB DEN74FTE09Accident · No injuriesClosedPiper PA-28 · Broomfield, CONTSB MIA74FKQ04Accident · Minor injuriesClosedTaylorcraft BC12-D · Amory, MSNTSB IAD74FIG05Accident · Serious injuriesClosedEnstrom F-28A · Augusta, WVNTSB IAD74FKM09Accident · Minor injuriesClosedCessna 150 · Fuquay, NCNTSB OAK74FXQ02Accident · No injuriesClosedCessna 182 · Reno, NVNTSB FTW74AF007Accident · 4 fatalClosedCessna 180 · Monticello, ARNTSB ANC74FAA03Accident · No injuriesClosedCessna 180 · North Pole, AKNTSB SEA74FYI06Accident · No injuriesClosedCessna 140 · Klamath Fals, ORNTSB NYC74FFA04Accident · No injuriesClosedGlobe GC-1B · Ballston Spa, NYNTSB IAD74FLJ05Accident · Minor injuriesClosedCessna 172 · Raleigh, NCNTSB IAD74FKW09Accident · No injuriesClosedPiper PA-24 · Madison, TNNTSB CHI74FEP05Accident · Serious injuriesClosedPiper PA-28 · Wautoma, WINTSB MKC74FCD05Accident · 1 fatalClosedMooney M20A · Des Moines, IANTSB DEN74FTE08Accident · Minor injuriesClosedBeech C-23 · Rifle, CONTSB CHI74FEG03Accident · 1 fatalClosedBeech 95-C55 · Cincinnati, OHNTSB NYC74FHA04Accident · No injuriesClosedCessna 150J · Honesdale, PANTSB FTW74FPM01Accident · No injuriesClosedPiper PA-28 · Stilwell, OKNTSB CHI74FEV06Accident · No injuriesClosedCessna 150H · Paris, ILNTSB OAK74AP005Accident · 5 fatalClosedVolpar C-45G · Honolulu, HINTSB MIA74FKQ03Accident · Serious injuriesClosedCessna A188A · Marks, MS