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 ANC73DAG13Accident · No injuriesClosedCessna 140 · Willow, AKNTSB MIA73FKG16Accident · No injuriesClosedPiper PA-22 · Lithonia, GANTSB FTW73DQG11Accident · Minor injuriesClosedPiper PA-25 · Silverton, TXNTSB ANC73DAG16Accident · No injuriesClosedUnited Cons UC-1 · Larsen Bay, AKNTSB CHI73FEC02Accident · No injuriesClosedSnow S2A · Parma, MINTSB NYC73FIG09Accident · Minor injuriesClosedPiper J-2 · Pasadena, MDNTSB NYC73FHD07Accident · No injuriesClosedAmer Avco AA1 · Atlantic City, NJNTSB MKC73DCG03Accident · No injuriesClosedCessna 150G · Rantoul, KSNTSB OAK73DJY02Accident · No injuriesClosedBell 204 · Can Tho, VMNTSB NYC73FIG07Accident · No injuriesClosedBeech A45 · Keymar, MDNTSB NYC73AN015Accident · 1 fatalClosedGlobe GC-1B · Coudersport, PANTSB FTW73FPD03Accident · No injuriesClosedPiper PA-28 · Ft.Worth, TXNTSB FTW73DRG05Accident · Minor injuriesClosedGrumman G-164A · Harlingen, TXNTSB NYC73FIA04Accident · Serious injuriesClosedBellanca 14-19 · Fredericksburg, VANTSB LAX73FUA03Accident · No injuriesClosedN. American SNJ-5 · Long Beach, CANTSB SEA73AS002Accident · 1 fatalClosedPiper PA-28 · Klamath Fall, ORNTSB DEN73DTC02Accident · No injuriesClosedPiper PA-18 · Belle Frche, SDNTSB CHI73FEP04Accident · No injuriesClosedCessna 150G · Genoa City, WINTSB LAX73AL002Accident · 1 fatalClosedCessna 140A · Rialto, CANTSB OAK73FXQ05Accident · Serious injuriesClosedBoeing B75N1 · Yerington, NVNTSB FTW73DPG03Accident · No injuriesClosedGrumman G-164A · Hazen, ARNTSB DEN73DTE09Accident · No injuriesClosedCessna 188 · Pritchett, CONTSB CHI73DEV04Accident · No injuriesClosedCessna 120 · Coffeen, ILNTSB FTW73FRJ04Accident · No injuriesClosedPiper PA-25 · Alexandria, LANTSB FTW73DQG04Accident · No injuriesClosedCessna 182 · Sweetwater, TXNTSB MKC73FCQ05Accident · No injuriesClosedCessna A150K · Oakley, KSNTSB DEN73FTM03Accident · Serious injuriesClosedErco 415-C · Roosevelt, UTNTSB CHI73FEP03Accident · Serious injuriesClosedPiper PA-22 · Arkdale, WINTSB NYC73FNA26Accident · Serious injuriesClosedPiper PA-28 · Block Island, RINTSB OAK73FVW05Accident · Minor injuriesClosedCessna 206 · Las Vegas, NVNTSB MKC73DCQ06Accident · No injuriesClosedPiper PA-28 · Utica, KSNTSB MIA73DKG13Accident · No injuriesClosedCessna 140 · Claxton, GANTSB LAX73FUJ08Accident · No injuriesClosedCessna 150 · Chandler, AZNTSB CHI73FEP02Accident · No injuriesClosedCessna 172F · Lake Geneva, WINTSB NYC73FID02Accident · Serious injuriesClosedBeech 95-B55 · Covington, VANTSB MIA73DKJ04Accident · No injuriesClosedStearman A75 · Tuskegee, ALNTSB MIA73AM009Accident · No injuriesClosedCessna 206 · Jackson, MSNTSB NYC73DHD01Accident · Serious injuriesClosedPiper J-3 · Rio Grande, NJNTSB FTW73FPA04Accident · No injuriesClosedCessna 140 · Baylor, TXNTSB DEN73FTM01Accident · 1 fatalClosedBell 47G3B1 · Ogden, UTNTSB NYC73FIG03Accident · Serious injuriesClosedCessna 177 · College Park, MDNTSB MIA73FKW01Accident · No injuriesClosedGreat Lakes 2T-1A · Chattanooga, TNNTSB DEN73FQA07Accident · No injuriesClosedCessna 172 · Grants, NMNTSB NYC73FFJ01Accident · No injuriesClosedFokker DR1 · Kirkville, NYNTSB FTW73DQD02Accident · Serious injuriesClosedPiper PA-28 · Juarez, MexicoNTSB OAK73DVW03Accident · No injuriesClosedPiper PA-28 · Lathrop Wells, NVNTSB FTW73FPA03Accident · No injuriesClosedPiper PA-30 · Dallas, TXNTSB ANC73DAG03Accident · No injuriesClosedCessna 180 · Anchorage, AKNTSB NYC73FNE01Accident · No injuriesClosedCessna 150J · Hartford, CTNTSB DEN73FQA02Accident · Serious injuriesClosedPiper PA-28 · Albuquerque, NM