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 LAX73FUJ71Accident · Minor injuriesClosedGlobe GC-1B · Glendale, AZNTSB DEN73FTM27Accident · No injuriesClosedWaco UMF · Ogden, UTNTSB DEN73DTC24Accident · No injuriesClosedBellanca 7GCBC · Rock River, WYNTSB MIA73FLD74Accident · No injuriesClosedSiai-Marche S.205 · Forest City, FLNTSB LAX73FUG51Accident · Serious injuriesClosedStinson 108-1 · B.Bear City, CANTSB CHI73DER07Accident · No injuriesClosedPiper PA-28 · Boyceville, WINTSB OAK73DVG60Accident · No injuriesClosedNaval Fcty N3N · Nelson, CANTSB IAD73AI014Accident · 1 fatalClosedPiper PA-23 · Cumberland, MDNTSB ANC73AA044Accident · 1 fatalClosedPiper PA-16 · Pilot Point, AKNTSB FTW73FQG36Accident · Minor injuriesClosedPiper PA-22 · Lubbock, TXNTSB OAK73FJA19Accident · 2 fatalClosedBeech A23-19 · Honolulu, HINTSB MKC73DCG39Accident · No injuriesClosedAero Comdr 500-B · Joplin, MONTSB MIA73DLA33Accident · No injuriesClosedGrumman G-164A · Jay, FLNTSB IAD73FKM34Accident · No injuriesClosedCessna 172H · Burnsville, NCNTSB SEA73FYC26Accident · Serious injuriesClosedPiper PA-22 · Oregon City, ORNTSB SEA73DYG32Accident · No injuriesClosedPiper PA-18 · Doumecy, IDNTSB NYC73FNE29Accident · No injuriesClosedScorpion II · Meriden, CTNTSB MIA73DKJ51Accident · No injuriesClosedPiper PA-22 · Pell City, ALNTSB IAD73ILQ26Accident · Serious injuriesClosedFly Baby 1-A · Greenville, KYNTSB DEN73FTE69Accident · No injuriesClosedBellanca 14-13 · Denver, CONTSB OAK73AP036Accident · 2 fatalClosedPiper PA-28 · Sheltr Cove, CANTSB SEA73FYE31Accident · Serious injuriesClosedWood VJ-22 · Langley, WANTSB CHI73DEP49Accident · No injuriesClosedCessna 172 · Bristol, WINTSB SEA73FYG28Accident · Serious injuriesClosedAmer Avco AA1 · Colville, WANTSB IAD73AI012Accident · 6 fatalClosedCessna 402A · Greensboro, NCNTSB IAD73AI011Accident · 2 fatalClosedPiper PA-24 · Orange, VANTSB DEN73AD047Accident · 2 fatalClosedN.American NA-265 · Montrose, CONTSB LAX73FUG49Accident · 1 fatalClosedMini Hawk 01 · Chino, CANTSB OAK73FVD29Accident · No injuriesClosedPiper PA-24 · Lodi, CANTSB IAD73FLQ24Accident · Minor injuriesClosedSmith DSA-1 · Elizabethtown, KYNTSB CHI73FEE50Accident · Serious injuriesClosedVolksplane 473 · Naperville, ILNTSB MKC73FER48Accident · Serious injuriesClosedGrumman G-164A · Elbow Lake, MNNTSB LAX73AL049Accident · No injuriesClosedBoeing 707 · Los Angeles, CANTSB LAX73OL012Accident · No injuriesClosedCessna 172M · San Luis, MexicoNTSB FTW73FPJ14Accident · Minor injuriesClosedBeech 23 · El Reno, OKNTSB NYC73FHD31Accident · No injuriesClosedBeech A90 · Wilmington, DENTSB MKC73FTG10Accident · No injuriesClosedCessna 305A · Bismarck, SDNTSB CHI73FEE49Accident · Minor injuriesClosedPiper PA-28R · Elgin, ILNTSB LAX73FUJ66Accident · Serious injuriesClosedCessna 172E · Peoria, AZNTSB IAD73FKM30Accident · Serious injuriesClosedM-Saulnier MS894A · Banner Elk, NCNTSB CHI73FET15Accident · Minor injuriesClosedCessna 150J · Angola, INNTSB DEN73FQA33Accident · Minor injuriesClosedBeech C-45H · Santa Fe, NMNTSB OAK73DVG54Accident · No injuriesClosedGrumman G-164 · Knights Ldg, CANTSB NYC73AN127Accident · 1 fatalClosedPiper J4A · Pennington, NJNTSB NYC73FNE26Accident · No injuriesClosedStinson 108-1 · Somers, CTNTSB FTW73FPJ13Accident · No injuriesClosedCessna 140 · Goldsby, OKNTSB LAX73FUQ25Accident · Serious injuriesClosedMooney M-18L · San Frnando, CANTSB CHI73AC078Accident · 1 fatalClosedDehavilland DHC-6 · Savoy, ILNTSB MKC73FCG35Accident · Minor injuriesClosedCessna 150G · Leawood, KSNTSB FTW73DRG60Accident · Minor injuriesClosedPiper PA-28 · Kileen, TX