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 NYC77FNE18Accident · Minor injuriesClosedPiper J3 · Fairfield, CTNTSB DEN77FTM16Accident · No injuriesClosedCessna 150B · Parawon, UTNTSB SEA77FYE18Accident · Minor injuriesClosedLuscombe 8A · Alderwood Mnr, WANTSB IAD77FLQ13Accident · No injuriesClosedPiper PA-24 · Rough River, KYNTSB FTW77FPG34Accident · Minor injuriesClosedPiper PA-22 · N.Little Rock, ARNTSB CHI77FEX27Accident · No injuriesClosedGlobe GC-1B · Charlestown, INNTSB CHI77FEE21Accident · Minor injuriesClosedGlobe GC-1B · Marengo, ILNTSB CHI77FEC27Accident · Minor injuriesClosedTaylorcraft L-2 · Monroe, MINTSB MKC77FCQ34Accident · No injuriesClosedPiper PA-25 · Benton, KSNTSB FTW77FRG47Accident · Serious injuriesClosedCessna 177 · Monte Alto, TXNTSB DEN77DQD20Accident · No injuriesClosedCessna 150 · Hachita, NMNTSB FTW77DRA21Accident · No injuriesClosedGrumman G-164A · Danbury, TXNTSB MKC77OCQ33Accident · No injuriesClosedCessna 172H · Fall River, KSNTSB MKC77FCG22Accident · No injuriesClosedMooney M20F · Moberly, MONTSB FTW77FPM09Accident · No injuriesClosedCessna 150M · Tulsa, OKNTSB FTW77DRD20Accident · No injuriesClosedCessna 180J · Dulac, LANTSB ANC77FAD06Accident · Minor injuriesClosedPiper PA-24 · Juneau, AKNTSB LAX77FUA13Accident · Serious injuriesClosedStinson 108-3 · Santa Ana, CANTSB DEN77FTE39Accident · No injuriesClosedCessna 152 · Linon, CONTSB SEA77FYE17Accident · No injuriesClosedBellanca 14-13 · Maple Valley, WANTSB NYC77FHJ17Accident · No injuriesClosedBeech K35 · Mattituck, NYNTSB NYC77FFJ18Accident · Serious injuriesClosedCessna 172 · Barker, NYNTSB MKC77FCG21Accident · No injuriesClosedPiper PA-24 · Osawatomie, KSNTSB CHI77FEC26Accident · Minor injuriesClosedBeech K-35 · Petersburg, MINTSB LAX77DUM28Accident · No injuriesClosedPiper PA-25 · Holtville, CANTSB MKC77DER37Accident · No injuriesClosedCessna A188B · Elbow Lake, MNNTSB DEN77DQA34Accident · No injuriesClosedBeech C35 · Reserve, NMNTSB LAX77FA040Accident · 1 fatalClosedCessna 150L · Fullerton, CANTSB SEA77FYE16Accident · Serious injuriesClosedCessna 172 · Sultan, WANTSB OAK77FVG29Accident · Serious injuriesClosedTaylorcraft F-19 · Weed, CANTSB FTW77FRG41Accident · No injuriesClosedGrum Amer AA-1A · San Antonio, TXNTSB OAK77FXQ14Accident · No injuriesClosedNavy N3N-3 · Truckee, CANTSB OAK77DVG26Accident · No injuriesClosedGrumman G-164A · Yuba City, CANTSB LAX77FUA10Accident · 1 fatalClosedPiper PA-28R · Long Beach, CANTSB IAD77FA035Accident · 1 fatalClosedBeech C23 · Knoxville, TNNTSB FTW77DRA19Accident · No injuriesClosedGrumman G-164A · Winnie, TXNTSB DEN77DTE34Accident · Serious injuriesClosedAeronca 7DC · Mosca, CONTSB CHI77FEE17Accident · No injuriesClosedCessna 177B · Illinois City, ILNTSB MKC77FER34Accident · Serious injuriesClosedSchweizer SGU2 · Cloquet, MNNTSB MIA77FKQ12Accident · Serious injuriesClosedGrumman AA5 · Hattiesburg, MSNTSB MKC77FCJ17Accident · Serious injuriesClosedCessna T210L · Holdrege, NENTSB MIA77FKT63Accident · Serious injuriesClosedPiper J-3 · Moore Haven, FLNTSB MIA77DKJ31Accident · Serious injuriesClosedPiper J-3 · Mobile, ALNTSB MIA77AA054Accident · 4 fatalClosedBellanca 14-13 · Thomaston, GANTSB LAX77FUQ26Accident · Minor injuriesClosedBeech G35 · Quartz Hill, CANTSB LAX77FA038Accident · 4 fatalClosedGrum Amer AA5-A · Flagstaff, AZNTSB OAK77DVA26Accident · No injuriesClosedPiper PA-36 · Tulare, CANTSB MKC77FCQ29Accident · Serious injuriesClosedGrum Amer AA1-A · Junction City, KSNTSB NYC77FHM15Accident · Minor injuriesClosedCessna 182 · Spring Valley, NYNTSB MIA77FA053Accident · No injuriesClosedDouglas DC-3 · San Juan, PR