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 ANC78FAA31Accident · Minor injuriesClosedDehavilland DHC-2 · Bettles, AKNTSB SEA78FYA17Accident · No injuriesClosedGrumman G-164B · Burley, IDNTSB MKC78DCJ32Accident · No injuriesClosedCessna 188B · Milford, NENTSB ANC78FAA30Accident · Minor injuriesClosedPiper PA-22 · Caribou Strip, AKNTSB MIA78FKG63Accident · Minor injuriesClosedGrumman G-164A · Lumpkin, GANTSB CHI78FET28Accident · Serious injuriesClosedGrum Amer AA-5 · Howe, INNTSB OAK78FXQ34Accident · No injuriesClosedCessna 210H · Truckee, CANTSB MKC78FCJ30Accident · Minor injuriesClosedStinson 108-3 · Mccook, NENTSB MKC78FCG48Accident · No injuriesClosedCessna 182E · Olathe, KSNTSB MKC78FCG53Accident · Minor injuriesClosedPiper PA-16 · Monett, MONTSB DEN78FTE74Accident · Serious injuriesClosedPiper PA-28 · Colorado Spngs, CONTSB DEN78FQA42Accident · No injuriesClosedGlobe GC-1B · Albuquerque, NMNTSB CHI78FEK24Accident · 1 fatalClosedCessna 150M · Urbana, OHNTSB FTW78DPG65Accident · No injuriesClosedGrumman G-164A · Beedeville, ARNTSB SEA78FTI23Accident · Serious injuriesClosedPiper PA-28 · Augusta, MTNTSB OAK78DVA55Accident · No injuriesClosedCessna 188B · Modesto, CANTSB NYC78FA070Accident · 1 fatalClosedPiper PA-22 · Huntingdon, PANTSB MKC78FER74Accident · 1 fatalClosedJ Lowers T-WIND · Fergus Falls, MNNTSB NYC79FHD20Accident · Minor injuriesClosedStearman A75N1 · Oxford, PANTSB LAX78FUJ82Accident · Serious injuriesClosedTravel Air 4000 · Tolleson, AZNTSB FTW78FPG60Accident · Minor injuriesClosedPiper PA-31 · Mena, ARNTSB NYC78FHD19Accident · No injuriesClosedPiper PA-25 · Skulville, NJNTSB MIA78FLD62Accident · No injuriesClosedPiper PA-28R · Eustis, FLNTSB LAX78DUJ83Accident · No injuriesClosedPiper J-3 · Wenden, AZNTSB DEN78DTE72Accident · No injuriesClosedCessna 150 · Sterling, CONTSB CHI78DEP43Accident · Minor injuriesClosedCessna 172 · Arbor Vitae, WINTSB NYC78FA069Accident · 4 fatalClosedPiper PA-32 · Westerly, RINTSB MKC78FER68Accident · Serious injuriesClosedLuscombe 8E · Webster, MNNTSB FTW78FA059Accident · Serious injuriesClosedBell 212 · Morgan City, LANTSB CHI78FA047Accident · Serious injuriesClosedDouglas DC-3 · Richmond, INNTSB OAK78DVA53Accident · No injuriesClosedGrumman G-164A · Tulare, CANTSB MKC78FER67Accident · Minor injuriesClosedCessna 180J · Goodland, MNNTSB LAX78DUJ77Accident · No injuriesClosedBellanca 17-30 · Ft Huachuca, AZNTSB MKC78FER69Accident · No injuriesClosedCessna 172 · Ada, MNNTSB MKC78DCJ27Accident · No injuriesClosedBeech V35B · Burwell, NENTSB CHI78FEM25Accident · No injuriesClosedCessna 172 · Chesaning, MINTSB MKC78DCJ26Accident · No injuriesClosedLuscombe 8E · Utica, NENTSB FTW78DRG59Accident · Minor injuriesClosedBeech G18S · Mc Allen, TXNTSB MKC78DCG44Accident · No injuriesClosedPiper PA-36 · Bolckow, MONTSB LAX78FA060Accident · 2 fatalClosedCessna 195 · Grand Canyon, AZNTSB MIA78FKG55Accident · Serious injuriesClosedCessna 188 · Brooklet, GANTSB FTW78DPG58Accident · No injuriesClosedPiper PA-28 · Summers, ARNTSB NYC78DFA26Accident · Minor injuriesClosedPiper J-3 · West Carthage, NYNTSB MIA78DKG61Accident · No injuriesClosedEpps 1911 · Blairville, GANTSB LAX78FUJ75Accident · No injuriesClosedGrumman G-164B · Coolidge, AZNTSB FTW79DPM24Accident · No injuriesClosedAir Tractor 301 · Bartlesville, OKNTSB MKC78FCJ22Accident · No injuriesClosedPiper PA-28R · Scottsbluff, NENTSB ANC78DAG82Accident · No injuriesClosedCessna 180 · Bethel, AKNTSB IAD78FLQ22Accident · Serious injuriesClosedCessna 150K · Russell Spgs, KYNTSB CHI78FEX21Accident · No injuriesClosedBeech G35 · Wolcott, IN