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 NYC81FGM02Accident · No injuriesClosedCessna 152 · Indiana, PANTSB FTW81FPG04Accident · Serious injuriesClosedPiper PA-28 · Benton, ARNTSB MKC81DCG07Accident · No injuriesClosedPiper PA-28 · Cassville, MONTSB DEN81FA008Accident · 4 fatalClosedAero Cmdr 500B · Buffalo, WYNTSB ANC81DAG07Accident · No injuriesClosedPiper PA-32 · Simeonof Is, AKNTSB MIA81DLD05Accident · Serious injuriesClosedCessna 188 · Myakka, FLNTSB NYC81DNC02Accident · No injuriesClosedStinson 108-2 · Winchester, NHNTSB DEN80FA005Accident · 1 fatalClosedTaylorcraft BC12-D · St.Ignatius, MTNTSB ATL81FKQ01Accident · Minor injuriesClosedPiper 601P · Greenwood, MSNTSB CHI81FEV03Accident · No injuriesClosedGrady KR-2 · Jacksonville, ILNTSB ATL80DKM28Accident · Minor injuriesClosedPiper PA-28 · East Bend, NCNTSB ANC81DA002Accident · Minor injuriesClosedCessna 206 · Pilot Point, AKNTSB LAX81DVA05Accident · No injuriesClosedAir Tractor AT-300 · Pixley, CANTSB ANC81FA001Accident · 1 fatalClosedCessna 185F · Le Duc Lake, AKNTSB CHI81FEP01Accident · No injuriesClosedPiper PA-28 · Lakewood, WINTSB MKC81DCQ01Accident · No injuriesClosedHelio Acft H-295 · Johnson, KSNTSB CHI81FER01Accident · No injuriesClosedGreat Lakes Baby · Whitebear Lake, MNNTSB ANC81DAD01Accident · Serious injuriesClosedAeronca 7AC · Haines, AKNTSB FTW81FRG02Accident · No injuriesClosedNavion H · San Antonio, TXNTSB ANC81DAA01Accident · Minor injuriesClosedBeech E18S · Candle, AKNTSB MIA81DKJ01Accident · No injuriesClosedPiper PA-25 · Graceville, FLNTSB LAX81FUJ02Accident · Serious injuriesClosedBeech S35 · Chandler, AZNTSB MKC81DCG01Accident · No injuriesClosedStinson 108-1 · Olathe, KSNTSB ANC81DAG01Accident · Minor injuriesClosedCessna 180J · Girdwood, AKNTSB ANC80FA104Accident · 2 fatalClosedBellanca 7GCBC · Anchorage, AKNTSB ANC80DA105Accident · Minor injuriesClosedCessna 207 · Levelock, AKNTSB NYC80FA093Accident · Serious injuriesClosedPiper PA-28R · Farmingdale, NYNTSB CHI80FEX37Accident · 1 fatalClosedPietenpol GN-1 · Marion, INNTSB ANC80FA103Accident · Serious injuriesClosedRobertson 207A · Nikiski, AKNTSB MIA80FA111Accident · 2 fatalClosedBeech C24R · Lake Wales, FLNTSB LAX80DUK05Accident · Serious injuriesClosedGrumman AA-5B · Phoenix, AZNTSB FTW80FQA46Accident · Minor injuriesClosedSchweizer SGS126 · Moriarty, NMNTSB LAX80DVA67Accident · No injuriesClosedCessna A188B · Hanford, CANTSB NYC80FNC47Accident · No injuriesClosedCessna 180H · Livermore, MENTSB NYC80FA092Accident · Serious injuriesClosedBeech D-55 · Keene, NHNTSB ATL81FA099Accident · No injuriesClosedSnow AT302A · Selma, ALNTSB CHI80FEP56Accident · Serious injuriesClosedPitts S-1S · Burlington, WINTSB CHI80FEC39Accident · No injuriesClosedAero Comdr 690A · Toledo, OHNTSB CHI80DET03Accident · No injuriesClosedBede BD-5B · Goshen, INNTSB NYC80DA090Accident · Serious injuriesClosedAeronca 7AC · Aurora, NYNTSB MKC80DCJ34Accident · Serious injuriesClosedPiper PA-28 · Burwell, NENTSB FTW80DA120Accident · No injuriesClosedDehavilland DHC-6 · Wichita Falls, TXNTSB CHI80DEP57Accident · No injuriesClosedCessna 170A · Iola, WINTSB ATL80FKG29Accident · No injuriesClosedBellanca 17-31 · Hampton, GANTSB CHI80FEG23Accident · Serious injuriesClosedAdams LD-S · Blue Ash, OHNTSB ATL80FKW22Accident · No injuriesClosedQuickie 01 · Collegedale, TNNTSB LAX80FUG58Accident · No injuriesClosedCessna 421 · Palm Springs, CANTSB MKC80FCG47Accident · Minor injuriesClosedBeech C23 · Ozark, MONTSB FTW80FPD47Accident · Minor injuriesClosedCessna 177RG · Roanoke, TXNTSB FTW80DRA52Accident · No injuriesClosedCessna A188B · El Campo, TX