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 SEA79FYK08Accident · No injuriesClosedCessna 172N · Bend, ORNTSB CHI79FEE49Accident · No injuriesClosedBeech E-35 · Deer Grove, ILNTSB CHI79FA046Accident · 6 fatalClosedCessna 210 · Cable, WINTSB CHI79FEP42Accident · No injuriesClosedAnderson Tent 2 · Burlington, WINTSB SEA79FTA12Accident · No injuriesClosedStinson 108-2 · Sidney, MTNTSB OAK79DVA24Accident · No injuriesClosedBeechcraft A-36 · Madera, CANTSB MKC79DER33Accident · No injuriesClosedNavion H · St Cloud, MNNTSB FTW79FPD16Accident · Serious injuriesClosedPiper PA-22 · Eliasville, TXNTSB LAX79FUA10Accident · Minor injuriesClosedCessna 177B · Fullerton, CANTSB IAD79FLT03Accident · No injuriesClosedGrumman G-164 · Newbern, TNNTSB MIA79FLD56Accident · Minor injuriesClosedCessna 150 · Inverness, FLNTSB FTW79FPM07Accident · Minor injuriesClosedCessna 210L · Tulsa, OKNTSB CHI79FEE43Accident · Minor injuriesClosedBeech E18S · Chicago, ILNTSB FTW79DPG24Accident · No injuriesClosedGrumman G-164A · Vilonia, ARNTSB ANC79DAA09Accident · No injuriesClosedPiper PA-18 · Chicken, AKNTSB CHI79FEI15Accident · Minor injuriesClosedCessna 150M · Elyria, OHNTSB SEA79FA027Accident · No injuriesClosedCessna T210C · Malta, IDNTSB FTW79DRJ11Accident · Minor injuriesClosedPiper J-3 · Monterey, LANTSB FTW79DRG23Accident · No injuriesClosedGrumman AA-1B · San Antonio, TXNTSB DEN79FQA22Accident · No injuriesClosedPiper PA-24 · Albuquerque, NMNTSB FTW79DRD20Accident · No injuriesClosedGrumman G-164B · Welsh, LANTSB IAD79FLJ08Accident · Minor injuriesClosedCessna 172M · Columbia, NCNTSB NYC79FNC21Accident · Serious injuriesClosedGrum Amer AA-5 · Burlington, VTNTSB OAK79DVG25Accident · Minor injuriesClosedPiper PA-25 · Redding, CANTSB NYC79FA031Accident · 1 fatalClosedPiper PA-28 · Pittstown, NJNTSB FTW79DRA11Accident · No injuriesClosedCessna 177RG · League City, TXNTSB MIA79FKG27Accident · 1 fatalClosedPDQ 2 · Kennesaw, GANTSB FTW79FRA09Accident · Serious injuriesClosedBlanik L-13 · Cypress, TXNTSB CHI79DEX17Accident · Minor injuriesClosedSparrowhawk D6 · Franklin, INNTSB CHI79DEE54Accident · No injuriesClosedAero Comdr 112A · Monee, ILNTSB MKC79FA022Accident · 2 fatalClosedChampion 7GCB · Waverly, KSNTSB LAX79FUJ56Accident · No injuriesClosedPiper PA-32R · Douglas, AZNTSB CHI79FEM14Accident · Minor injuriesClosedCessna 150L · Traverse City, MINTSB FTW79FPA12Accident · 1 fatalClosedThorp TA-18 · Allen, TXNTSB FTW79FPJ06Accident · No injuriesClosedPiper PA-28 · Altus, OKNTSB DCA79AA012Accident · 3 fatalClosedNord-Avion 262 · Marina Del Rey, CANTSB MIA79FLD47Accident · Serious injuriesClosedBeech C-23 · Orlando, FLNTSB FTW79DPA11Accident · No injuriesClosedCessna 188 · Pecan Gap, TXNTSB OAK79DVG21Accident · Minor injuriesClosedSikorsky H-19D · Vina, CANTSB FTW79DRJ10Accident · No injuriesClosedCessna A188B · Winnsboro, LANTSB MIA79DKG20Accident · No injuriesClosedCessna 170 · Douglas, GANTSB FTW79FPD09Accident · Minor injuriesClosedMooney M20C · N Rchlnd Hills, TXNTSB MKC79FA020Accident · No injuriesClosedPiper PA-31 · Clinton, IANTSB MIA79FLD43Accident · Serious injuriesClosedPiper PA-23 · Winter Haven, FLNTSB IAD79RLJ06Accident · Minor injuriesClosedCessna 172 · Roseboro, NCNTSB DCA79AA010Accident · Minor injuriesClosedDehavilland DHC-6 · Cheyenne, WYNTSB CHI79FA029Accident · Serious injuriesClosedBeech E18S · Indianapolis, INNTSB ANC79DAG33Accident · Minor injuriesClosedCessna 150 · Anchorage, AKNTSB MKC79FA019Accident · 1 fatalClosedCessna 172M · Fort Scott, KSNTSB DEN79FA023Accident · 4 fatalClosedCessna 206 · Moose, WY