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 IAD78FKW01Accident · Minor injuriesClosedCessna 150 · Spring Hill, TNNTSB UNK78X0100Accident · No injuriesClosedCessna 188B · St Matthews, SCNTSB MKC78FTK01Accident · No injuriesClosedPiper PA-24 · Rapid City, SDNTSB FTW78FRG01Accident · Serious injuriesClosedPiper PA-28 · San Antonio, TXNTSB FTW78DQG01Accident · No injuriesClosedPiper PA-25 · Smyer, TXNTSB MIA77FA095Accident · 1 fatalClosedCessna 182P · Stone Mountain, GANTSB CHI77FEX54Accident · No injuriesClosedCessna 402 · Indianapolis, INNTSB FTW77FRJ24Accident · No injuriesClosedCessna 175A · Gilliam, LANTSB ANC77FAA60Accident · No injuriesClosedCessna 180 · Nenana, AKNTSB NYC77FLD85Accident · No injuriesClosedCessna A188B · Zellwood, FLNTSB LAX77DUK06Accident · No injuriesClosedPiper PA-32 · Marble Canyon, AZNTSB NYC78FGM46Accident · No injuriesClosedPiper PA-28 · Monroeville, PANTSB ANC77FA090Accident · Serious injuriesClosedPiper PA-31B · Lke Minchumina, AKNTSB SEA77DTI24Accident · No injuriesClosedCessna 120 · Chester, MTNTSB SEA77DTI23Accident · No injuriesClosedCessna 182G · Ledger, MTNTSB IAD77FA067Accident · 1 fatalClosedPiper PA-32R · Williamson, WVNTSB FTW77FPG91Accident · 1 fatalClosedAeronca 7AC · Slovak, ARNTSB CHI77FEI43Accident · Minor injuriesClosedPiper PA-25 · N.Fairfield, OHNTSB FTW77FQG56Accident · Minor injuriesClosedPiper PA-28 · Panhandle, TXNTSB FTW77DQD29Accident · No injuriesClosedCessna 172 · Alpine, TXNTSB LAX77FUK04Accident · Minor injuriesClosedStinson 10A · Tucson, AZNTSB FTW77FQG54Accident · Minor injuriesClosedPiper PA-25 · Garden City, TXNTSB ANC77DAH28Accident · No injuriesClosedLake LA-4 · Turquoise Lake, AKNTSB NYC77FNA34Accident · No injuriesClosedCessna 182P · Mansfield, MANTSB NYC77FHD32Accident · No injuriesClosedCessna 172H · Marlton, NJNTSB NYC77FGM45Accident · Serious injuriesClosedMiniplane DS · Ebensburg, PANTSB MKC77FA040Accident · 2 fatalClosedAeronca 7AC · Grand Rapids, MNNTSB ANC77DAH40Accident · No injuriesClosedPiper PA-18 · Anchorage, AKNTSB SEA77FA053Accident · 1 fatalClosedCessna 150L · Clarkston, WANTSB LAX77FUG62Accident · Serious injuriesClosedSchweizer 1-26D · Hemet, CANTSB IAD77FA066Accident · Serious injuriesClosedPiper PA-28 · Clinton, MDNTSB ANC77DAH18Accident · No injuriesClosedBellanca 7ACA · Kasitna Bay, AKNTSB MKC77DCD49Accident · No injuriesClosedPiper PA-12 · Denison, IANTSB IAD77FLJ38Accident · No injuriesClosedEnstrom F28A · Fayetteville, NCNTSB ANC77DAH14Accident · No injuriesClosedMaule M-5 · Hayes River, AKNTSB MIA77DKQ36Accident · No injuriesClosedCessna 188B · Sunflower, MSNTSB FTW77FPG85Accident · No injuriesClosedCessna 188B · Portland, ARNTSB FTW77FPD39Accident · Serious injuriesClosedCessna 150 · Springtown, TXNTSB DEN77FQA55Accident · Minor injuriesClosedCessna 172 · Albuquerque, NMNTSB DCA77AA027Accident · 4 fatalClosedDouglas DC-7BF · Yakutat, AKNTSB ANC77DAH13Accident · No injuriesClosedPiper PA-14 · Iliamna, AKNTSB NYC77DHA26Accident · No injuriesClosedGlobe GC1B · Pottstown, PANTSB CHI77FET34Accident · 1 fatalClosedPiper PA-22 · Fort Wayne, INNTSB CHI77FEC44Accident · No injuriesClosedWallis 3 · Plymouth, MINTSB DEN77DTC28Accident · No injuriesClosedCessna T210L · Keyhole, WYNTSB IAD77FKM31Accident · Minor injuriesClosedAero Comdr 112TC · Charlotte, NCNTSB DEN77DTE84Accident · No injuriesClosedPorterfield 35-70 · Falcon, CONTSB OAK77DVD53Accident · No injuriesClosedWeatherly 201B · Tracy, CANTSB NYC78FHM04Accident · No injuriesClosedHiller Acft UH-12C · Lincoln Park, NJNTSB LAX77FUM38Accident · Minor injuriesClosedPiper PA-28 · San Diego, CA