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 SEA74DYC16Accident · Minor injuriesClosedCessna 170A · Imnaha, ORNTSB MIA74DKQ10Accident · No injuriesClosedCessna 188 · Lambert, MSNTSB ANC74FAA12Accident · No injuriesClosedLuscombe 8A · Big Delta, AKNTSB ANC74DAG49Accident · No injuriesClosedPiper PA-14 · Susitna, AKNTSB CHI74FEV21Accident · No injuriesClosedNavion A · Monmouth, ILNTSB CHI74FEI10Accident · Serious injuriesClosedCorben ACE · Brookfield, OHNTSB ANC74DAG56Accident · No injuriesClosedPiper PA-18 · Gulkana, AKNTSB ANC74AA033Accident · Minor injuriesClosedCessna 185 · Hlf Cabn Lke, AKNTSB FTW74FPD10Accident · Minor injuriesClosedPiper PA-32 · South Lake, TXNTSB CHI74FCA01Accident · Minor injuriesClosedCessna T210L · Cahokia, ILNTSB MKC74FCG10Accident · Serious injuriesClosedMiniplane B-1 · Independence, MONTSB ANC74DAG54Accident · No injuriesClosedPiper PA-18 · Gulkana, AKNTSB MKC74FCJ09Accident · Minor injuriesClosedBeech 58 · Omaha, NENTSB MKC74DCQ14Accident · No injuriesClosedCessna 172 · Inman, KSNTSB ANC74FAD06Accident · No injuriesClosedCessna 180H · Yakutat, AKNTSB SEA74FYG15Accident · Serious injuriesClosedCessna 182P · Dixie, IDNTSB LAX74DUJ18Accident · No injuriesClosedPiper PA-28 · White Mt Lk, AZNTSB FTW74DQG13Accident · No injuriesClosedHarding Ace E · Hereford, TXNTSB CHI74FEI12Accident · Minor injuriesClosedPiper PA-28 · Gustavus, OHNTSB ANC74DAG47Accident · No injuriesClosedPiper PA-18 · Talchultna R, AKNTSB NYC74AN021Accident · 2 fatalClosedAeronca S11AC · New Milford, CTNTSB MKC74DER12Accident · No injuriesClosedPiper PA-28 · Elk River, MNNTSB MIA74FKG26Accident · Minor injuriesClosedCessna 140 · Stockbridge, GANTSB OAK74FVG12Accident · No injuriesClosedPiper PA-25 · Dixon, CANTSB ANC74DAG39Accident · No injuriesClosedPiper PA-18 · Palmer, CANTSB OAK74FVD08Accident · No injuriesClosedCessna TU206B · Livermore, CANTSB NYC74FGM04Accident · No injuriesClosedPiper J3C-65 · Pittsfield, PANTSB MIA74FLA15Accident · No injuriesClosedPiper PA-28 · Panacea, FLNTSB MIA74DLD24Accident · Serious injuriesClosedMooney M20F · Edgewater, FLNTSB OAK74DVD11Accident · No injuriesClosedCessna 170A · Ukiah, CANTSB NYC74FHM06Accident · No injuriesClosedCessna 172 · Farmingdale, NJNTSB NYC74FHA08Accident · 1 fatalClosedPat-Bar Spcl · Bally, PANTSB MKC74DCD12Accident · No injuriesClosedGlobe GC-1B · Blakesburg, IANTSB CHI74FEV17Accident · Minor injuriesClosedPiper PA-22 · Atwood, ILNTSB CHI74FEV16Accident · Serious injuriesClosedPiper PA-28 · Mt Sterling, ILNTSB CHI74FEC10Accident · No injuriesClosedCessna 177 · Port Huron, MINTSB ANC74DAG41Accident · No injuriesClosedPiper PA-18 · Kenai, AKNTSB ANC74FAA07Accident · Minor injuriesClosedAero Comdr 100 · Fairbanks, AKNTSB NYC74FNA12Accident · Minor injuriesClosedAmer Avco AA1-B · Tewksbury, MANTSB MKC74FCA06Accident · No injuriesClosedBeech E18S · St Louis, MONTSB ANC74DAG32Accident · No injuriesClosedStol Acft UC-1 · Mcgrath, AKNTSB ANC74DAG31Accident · No injuriesClosedCessna 180 · Beluga Lake, AKNTSB FTW74DRA12Accident · No injuriesClosedBoeing B75N1 · Chesterville, TXNTSB ANC74DAG24Accident · No injuriesClosedCessna 172 · Anchorage, AKNTSB OAK73FXQ10Accident · Minor injuriesClosedCessna 182N · Mammoth Lks, CANTSB OAK74FVD05Accident · No injuriesClosedNavion G · Lodi, CANTSB OAK74AP007Accident · 2 fatalClosedBell 206B · San Andreas, CANTSB DEN74DTM07Accident · No injuriesClosedCessna 172 · Green River, UTNTSB DEN74AD011Accident · 1 fatalClosedCessna 195 · Worland, WYNTSB NYC74FNA11Accident · Serious injuriesClosedPiper PA-12 · Greene, RI