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 MIA80FLD86Accident · Serious injuriesClosedCessna 150N · Groveland, FLNTSB LAX80DA133Accident · 1 fatalClosedBeech 35 · Shelter Cove, CANTSB ATL80FLJ19Accident · No injuriesClosedCessna 188B · Rowland, NCNTSB FTW80DPG54Accident · No injuriesClosedSnow S2R · Hickory Ridge, ARNTSB MIA80FLD83Accident · No injuriesClosedQuickie Monroe · Melbourne, FLNTSB DEN80FTM32Accident · No injuriesClosedPiper PA-28 · Strawberry Vly, UTNTSB DEN80FTG14Accident · No injuriesClosedPiper PA-24 · Devils Lake, NDNTSB ATL80FKW18Accident · Minor injuriesClosedCessna 150L · Jonesboro, TNNTSB MKC80DCJ20Accident · No injuriesClosedCessna A188B · Holdrege, NENTSB ANC80DAG85Accident · No injuriesClosedBellanca 76CBC · Tyonek, AKNTSB LAX80FXQ32Accident · No injuriesClosedPiper PA-22 · Carson City, NVNTSB NYC80FNE22Accident · Minor injuriesClosedBeech B23 · Hopedale, MANTSB ANC80DA091Accident · No injuriesClosedCessna 180J · Queens Cannery, AKNTSB ATL80FKQ18Accident · Serious injuriesClosedCessna A188B · Yazoo City, MSNTSB CHI80FEE34Accident · No injuriesClosedCessna A188B · Pecatonica, ILNTSB FTW80DQG32Accident · No injuriesClosedRockwell S2R · Kress, TXNTSB SEA80FYE42Accident · Serious injuriesClosedBeech A36TC · Seattle, WANTSB DEN80FTK17Accident · No injuriesClosedBeech C35 · Yankton, SDNTSB DEN80DTI13Accident · No injuriesClosedCessna 172 · Turner, MTNTSB CHI80FEX25Accident · No injuriesClosedCessna 150F · Jeffersonville, INNTSB CHI80FA058Accident · 2 fatalClosedPiper J-3 · Flushing, MINTSB SEA80FYP28Accident · Minor injuriesClosedTexas Hel OH-13H · Moses Lake, WANTSB LAX80FA123Accident · 1 fatalClosedGrum Amer AA-1B · Lake Hughes, CANTSB FTW80DPG50Accident · No injuriesClosedGrumman G-164A · Tuckerman, ARNTSB DEN80FA049Accident · 3 fatalClosedBellanca 17 · Sterling, CONTSB ANC80DAG94Accident · No injuriesClosedPiper PA-18A · Togiak, AKNTSB ATL80DKQ17Accident · No injuriesClosedCessna 188B · Belzoni, MSNTSB SEA80FYM50Accident · Minor injuriesClosedPiper PA-22 · Dallas, ORNTSB NYC80FNC32Accident · No injuriesClosedCessna 182 · South Hero, VTNTSB MKC80FA045Accident · No injuriesClosedBeech 95-B55 · Malden, MONTSB CHI80FEM36Accident · Serious injuriesClosedGrum-Amer AA-1 · Midland, MINTSB CHI80DA057Accident · 2 fatalClosedStinson 108-3 · Grattan, MINTSB LAX80FA122Accident · 1 fatalClosedLaister LP-15 · Tucson, AZNTSB CHI80FEG20Accident · Serious injuriesClosedPiper PA-28 · Cincinnati, OHNTSB CHI80FEE38Accident · No injuriesClosedPiper PA-23 · Waukegan, ILNTSB ATL80FIA12Accident · No injuriesClosedGrum-Amer AA-1 · Elkton, VANTSB CHI80FEK21Accident · No injuriesClosedBell 47G-2 · New Knoxville, OHNTSB CHI80DEX24Accident · No injuriesClosedAeronca 7AC · Morristown, INNTSB CHI80FEV26Accident · No injuriesClosedPiper PA-36 · Mc Lean, ILNTSB CHI80FER56Accident · Serious injuriesClosedBellanca 7GCBC · Duluth, MNNTSB LAX80DVA52Accident · Minor injuriesClosedAero Comdr 600S2R · San Joaquin, CANTSB CHI80FER57Accident · No injuriesClosedPiper PA-34 · Albert Lea, MNNTSB CHI80FEC22Accident · Serious injuriesClosedPiper PA-32R · Troy, MINTSB NYC80FA053Accident · 1 fatalClosedBeech C35 · Spring Valley, NYNTSB LAX80FA118Accident · 3 fatalClosedPiper PA-24 · S.Lake Tahoe, CANTSB CHI80FA051Accident · 1 fatalClosedGrum Amer AA-1A · Troy, MINTSB ATL80FKW16Accident · Serious injuriesClosedPiper PA-32 · Sparta, TNNTSB ATL80DKQ14Accident · No injuriesClosedCessna T188C · Tutwiler, MSNTSB CHI80FEV25Accident · No injuriesClosedPiper PA-28 · Lacon, ILNTSB LAX80FJA20Accident · Serious injuriesClosedSchweizer SGS126 · Oahu, HI