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 NYC76AN052Accident · 1 fatalClosedPiper PA-23 · Spring Valley, NYNTSB FTW76FPA12Accident · Minor injuriesClosedGrumman AA1-B · Lancaster, TXNTSB ANC76AA050Accident · No injuriesClosedCessna 180 · Dillingham, AKNTSB OAK76FVM15Accident · Serious injuriesClosedCessna 120 · Morgan Hill, CANTSB NYC76FNA22Accident · Minor injuriesClosedPiper PA-28 · Malboro, MANTSB LAX76DUJ45Accident · No injuriesClosedPiper PA-22 · Aguila, AZNTSB IAD76FIG07Accident · Minor injuriesClosedStinson 108 · Davidsonville, MDNTSB CHI76FCA05Accident · Serious injuriesClosedHiller Acft FH1100 · Belleville, ILNTSB MIA76AM047Accident · 1 fatalClosedCessna 185 · St Petersburg, FLNTSB CHI76AC036Accident · Minor injuriesClosedBeech E18S · Fort Wayne, INNTSB MKC76FER41Accident · No injuriesClosedBeech 35J · Rochester, MNNTSB CHI76FEP19Accident · Serious injuriesClosedCessna 172A · Madison, WINTSB FTW76DPG37Accident · No injuriesClosedCessna 188 · Marker Tree, ARNTSB SEA76DYC23Accident · No injuriesClosedAmer Avco AA1-A · Goldendale, WANTSB SEA76AS027Accident · 1 fatalClosedBeech 19A · Port Orchard, WANTSB MIA76DLD13Accident · No injuriesClosedPiper PA-28 · Englewood, FLNTSB IAD76FIJ09Accident · Serious injuriesClosedCessna 172C · Lansing, WVNTSB IAD76II040Incident · No injuriesClosedPiper PA-31 · Chantilly, VANTSB FTW76AF045Accident · 1 fatalClosedCessna 150F · Crowville, LANTSB DEN76FTE41Accident · No injuriesClosedTaylorcraft BC12-D · Aurora, CONTSB MIA76AM042Accident · 1 fatalClosedBeech J35 · Columbus, MSNTSB IAD76II032Incident · No injuriesClosedPiper PA-23 · Beckley, WVNTSB OAK76AP028Accident · 2 fatalClosedBeech K35 · S.Lake Tahoe, CANTSB MIA76FLT02Accident · No injuriesClosedPiper J3C · Southhaven, MSNTSB FTW76DRD18Accident · No injuriesClosedCessna 170B · Westwego, LANTSB FTW76AF043Accident · 2 fatalClosedPiper PA-28 · Lakeview, ARNTSB ANC76AA048Accident · 3 fatalClosedPiper PA-18 · Willow, AKNTSB DEN76FTE39Accident · Minor injuriesClosedCessna A185F · Crested Butte, CONTSB CHI76DEM20Accident · No injuriesClosedCessna 150G · Mikado, MINTSB MIA76DKT30Accident · No injuriesClosedCessna 150 · Punta Gorda, FLNTSB LAX76FUM13Accident · No injuriesClosedBoeing A75 · Imperial, CANTSB IAD76AI028Accident · 6 fatalClosedBeech C90 · Charleston, WVNTSB CHI76FEE28Accident · Serious injuriesClosedPiper PA-28R · Polo, ILNTSB ANC76FAG62Accident · No injuriesClosedHelio Acft H-250 · Anchorage, AKNTSB MIA76FLA21Accident · Serious injuriesClosedCessna 172M · Callahan, FLNTSB IAD76FLQ16Accident · No injuriesClosedMorrisey 2150A · Carrboro, NCNTSB SEA76FTA07Accident · No injuriesClosedCessna 140 · Miles City, MTNTSB MIA76FLD28Accident · No injuriesClosedGlobe GC-1B · Umatilla, FLNTSB FTW76FQG36Accident · No injuriesClosedAmer Avco AA1-B · Amarillo, TXNTSB MKC76FCG29Accident · Minor injuriesClosedCessna 205A · Lees Summit, MONTSB IAD76DKM15Accident · No injuriesClosedCessna 182K · Horseshoe, NCNTSB MKC76FCQ22Accident · Serious injuriesClosedPiper PA-28 · Haven, KSNTSB SEA76AS023Accident · 2 fatalClosedCessna 150J · Grants Pass, ORNTSB NYC76FNC30Accident · Minor injuriesClosedLuscombe 8E · Milton, VTNTSB FTW76FPG32Accident · No injuriesClosedChampion 7ACA · Conway, ARNTSB MIA76FKQ22Accident · Minor injuriesClosedCessna 140 · Philip, MSNTSB CHI76IC032Incident · No injuriesClosedBoeing 747 · Boston, MANTSB MIA76FKG28Accident · Serious injuriesClosedCessna 120 · Athens, GANTSB NYC76FNC25Accident · No injuriesClosedCessna 210H · Newport, VTNTSB MIA76FKT24Accident · Minor injuriesClosedPiper J-3 · Indiantown, FL