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 NYC79FA074Accident · 3 fatalClosedBeech D55 · Flushing, NYNTSB LAX79DVA54Accident · No injuriesClosedNaval Fcty N3N-3 · Madera, CANTSB CHI79FEP70Accident · Minor injuriesClosedStarduster SA-100 · Fond Du Lac, WINTSB FTW79DPG75Accident · No injuriesClosedPiper PA-25 · Mcgehee, ARNTSB CHI79FEC40Accident · 1 fatalClosedLockheed 12A · Pontiac, MINTSB CHI79DEP82Accident · Minor injuriesClosedCessna 182P · Platteville, WINTSB ANC79FA076Accident · 1 fatalClosedCessna 207A · Nikishki, AKNTSB NYC79FFA29Accident · No injuriesClosedPiper PA-25 · Schuylerville, NYNTSB LAX79FXQ32Accident · Minor injuriesClosedBeech N35 · Reno, NVNTSB FTW79DPJ34Accident · No injuriesClosedPiper PA-25 · Boise City, OKNTSB MKC79DER61Accident · No injuriesClosedBellanca 8GCBC · Federal Dam, MNNTSB NYC79FNC45Accident · Minor injuriesClosedBenson B8MVW · Mars Hill, MENTSB CHI79DET27Accident · No injuriesClosedBreezy DDJ-1 · Roselawn, INNTSB FTW79FPG72Accident · No injuriesClosedGrumman G-164B · Amagon, ARNTSB ANC79DAA29Accident · No injuriesClosedBellanca 15AC · Fairbanks, AKNTSB LAX79DUK05Accident · No injuriesClosedMooney M20K · Flagstaff, AZNTSB LAX79FUQ41Accident · No injuriesClosedGrum Amer AA1-C · Simi Valley, CANTSB LAX79FVA53Accident · No injuriesClosedBeech 65-90 · Fresno, CANTSB FTW79FPD31Accident · No injuriesClosedGlobe GC-1B · Keller, TXNTSB FTW79DRJ18Accident · No injuriesClosedBell 47WASP · Plaucheville, LANTSB CHI79FA062Accident · 1 fatalClosedCessna 150M · Peoria, ILNTSB OAK79FVG66Accident · Minor injuriesClosedMooney M20E · San Andreas, CANTSB CHI79FEP61Accident · 2 fatalClosedCessna 177RG · Sheboygen, WINTSB MKC79FA044Accident · No injuriesClosedCessna 401 · St.Louis, MONTSB FTW79DPJ32Accident · No injuriesClosedCessna 150G · Anadarko, OKNTSB CHI79DEC39Accident · Serious injuriesClosedVariviggin · Flint, MINTSB ANC79DAG72Accident · Minor injuriesClosedCessna 170A · Palmer, AKNTSB SEA79FA048Accident · 2 fatalClosedGrum Amer AA-5A · Augusta, MTNTSB LAX79FVA16Accident · Minor injuriesClosedAero Comdr 112A · Long Beach, CANTSB LAX79FUJ94Accident · Minor injuriesClosedCessna T210M · Show Low, AZNTSB DCA79AA020Accident · 8 fatalClosedDehavilland DH-114 · St Croix, VINTSB SEA79DYP39Accident · Minor injuriesClosedTaylorcraft DC-65 · Mead, WANTSB DEN79FQA39Accident · No injuriesClosedPiper PA-24 · Angel Fire, NMNTSB SEA79FYA20Accident · No injuriesClosedCessna 188 · Nyssa, ORNTSB NYC79FA063Accident · 1 fatalClosedAero Comdr 560A · Pavilion, NYNTSB MKC79DER56Accident · Minor injuriesClosedBellanca 7GCAA · Mankato, MNNTSB LAX79FUK03Accident · Serious injuriesClosedVeri-Eze 1 · Bullhead City, AZNTSB DEN79FQA41Accident · No injuriesClosedPiper PA-28 · Cuba, NMNTSB ANC79DAG68Accident · No injuriesClosedMaule M4-210 · Anchorage, AKNTSB SEA79DYP38Accident · Minor injuriesClosedCessna 188B · Mattawa, WANTSB OAK79FA035Accident · Serious injuriesClosedCessna 402B · Las Vegas, NVNTSB CHI79FEE72Accident · Minor injuriesClosedLach/Bensen B8M · Rockford, ILNTSB ANC79DAG69Accident · Minor injuriesClosedPiper PA-28 · Iliamna, AKNTSB LAX79FUQ39Accident · No injuriesClosedHiller Acft FH1100 · Oxnard, CANTSB NYC79FGM35Accident · No injuriesClosedCessna 150 · Zelienople, PANTSB IAD79FLQ19Accident · Minor injuriesClosedPiper PA-24 · Somerset, KYNTSB MIA79FLD76Accident · No injuriesClosedCessna 150 · Clearwater, FLNTSB MKC79DCJ26Accident · No injuriesClosedCessna 188A · Bassett, NENTSB IAD79FLQ18Accident · Minor injuriesClosedBeech 35 · Maysville, KYNTSB IAD79FIG09Accident · Serious injuriesClosedPiper PA-23 · Baltimore, MD