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 ATL80FKG01Accident · No injuriesClosedPiper PA-25 · Irwinville, GANTSB NYC80FHA09Accident · Minor injuriesClosedCessna 140 · Slatington, PANTSB LAX80DUJ55Accident · No injuriesClosedGrum Amer AA-5B · Grnd Cyn Cvrn, AZNTSB CHI80FET18Accident · 1 fatalClosedPitts S-1S · Fort Wayne, INNTSB CHI80FEI15Accident · 1 fatalClosedCessna 175 · New Phila, OHNTSB CHI80DEP28Accident · No injuriesClosedCessna 152 · Tilden, WINTSB NYC80FHA10Accident · Minor injuriesClosedPiper PA-28R · Westrockhill, PANTSB LAX80FUJ54Accident · No injuriesClosedBeech V35A · Scottsdale, AZNTSB CHI80FET17Accident · No injuriesClosedBeech G35 · Syracuse, INNTSB ATL80FID19Accident · No injuriesClosedPiper J-3 · Quinton, VANTSB LAX80DUJ51Accident · No injuriesClosedPiper PA-28 · Tucson, AZNTSB FTW80DPD26Accident · No injuriesClosedPiper PA-28 · Frisco, TXNTSB NYC80FHM15Accident · No injuriesClosedCessna 150L · Lincoln Park, NJNTSB MIA80FLD62Accident · Minor injuriesClosedRobertson PA-30 · Okeechobee, FLNTSB LAX80FVG34Accident · No injuriesClosedGrumman G-164 · Palermo, CANTSB LAX80FVG31Accident · No injuriesClosedGrumman G-164 · Biggs, CANTSB CHI80DEP26Accident · Serious injuriesClosedCessna 172F · Stone Lake, WINTSB CHI80DEP23Accident · No injuriesClosedPiper PA-12 · Mount Vernon, WINTSB MKC80DCG20Accident · No injuriesClosedGrumman AA1B · Lebo, KSNTSB MIA80DLD59Accident · No injuriesClosedBeech 95-B55 · Ft.Myers, FLNTSB FTW80FQG15Accident · Serious injuriesClosedBeech C23 · Slaton, TXNTSB NYC80FA036Accident · 2 fatalClosedCessna 152 · Flushing, NYNTSB LAX80FVG32Accident · No injuriesClosedGrumman G-164 · Butte City, CANTSB IAD80FA040Accident · 4 fatalClosedPiper PA-28 · Falmouth, KYNTSB FTW80FQG18Accident · No injuriesClosedCASA 131E · Big Spring, TXNTSB DEN80FA030Accident · 1 fatalClosedForney F-1 · Ft.Collins, CONTSB CHI80FET16Accident · No injuriesClosedCessna 337G · Bremen, INNTSB CHI80FEE21Accident · Serious injuriesClosedPiper PA-28 · Naperville, ILNTSB SEA80FTA10Accident · No injuriesClosedGrumman G-164B · Billings, MTNTSB LAX80DVA32Accident · No injuriesClosedPiper PA-38 · Tulare, CANTSB CHI80FEX11Accident · Minor injuriesClosedCessna 172 · Mooresville, INNTSB ATL80FID18Accident · No injuriesClosedEaa Biplane P-2 · Chesterfield, VANTSB SEA80FYE31Accident · No injuriesClosedRepublic RC-3 · Port Angeles, WANTSB MKC80FCD15Accident · Minor injuriesClosedMcculley Quicki · Muscatine, IANTSB FTW80DQG14Accident · No injuriesClosedCessna R182 · Vega, TXNTSB CHI80FEI13Accident · No injuriesClosedCessna 170 · Strongsville, OHNTSB FTW80DPD25Accident · No injuriesClosedCessna 150 · Graham, TXNTSB LAX80FA080Accident · 2 fatalClosedPiper PA-28 · Big Bear City, CANTSB SEA80FA025Accident · 3 fatalClosedDouglas DC-3C · Athol, IDNTSB IAD80DID15Accident · No injuriesClosedCessna 150 · Hot Springs, VANTSB FTW80DPG21Accident · No injuriesClosedGrumman G-164A · Scott, ARNTSB CHI80FEX09Accident · Serious injuriesClosedBeech J50 · Columbus, INNTSB MIA80DKG23Accident · Minor injuriesClosedPiper PA-18 · Sylvester, GANTSB MKC80FA030Accident · 2 fatalClosedCessna 340A · Minneapolis, MNNTSB LAX80FA075Accident · 1 fatalClosedChampion 7KCAB · Corona, CANTSB LAX80FUM17Accident · Serious injuriesClosedPiper J-3 · El Cajon, CANTSB CHI80FEE19Accident · Serious injuriesClosedAvion Stamp SV4A · Downers Grove, ILNTSB DEN80FTE37Accident · Serious injuriesClosedStarduster II · Ft Collins, CONTSB MIA80FA053Accident · 1 fatalClosedPiper PA-28 · Sebastian, FLNTSB MIA80FA052Accident · Serious injuriesClosedCessna 414 · Gulfport, MS