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 SEA77DYP33Accident · No injuriesClosedAero Comdr 600S2R · Othello, WANTSB NYC77FNA30Accident · No injuriesClosedStinson 108-3 · Marshfield, MANTSB MKC77DCJ32Accident · Minor injuriesClosedCessna 188 · Trumbull, NENTSB MIA77FKJ61Accident · No injuriesClosedPiper PA-23 · Montgomery, ALNTSB MIA77FKG56Accident · No injuriesClosedCessna 150F · Milledgeville, GANTSB CHI77FET27Accident · Serious injuriesClosedVolksplane VP-IFD · Chesterton, INNTSB MKC77FTK33Accident · No injuriesClosedPiper PA-36 · Kennebec, SDNTSB MIA77FKG55Accident · Serious injuriesClosedPiper PA-28 · Atlanta, GANTSB CHI77FEC40Accident · No injuriesClosedPiper PA28 · Mason, MINTSB ANC77DAD09Accident · Minor injuriesClosedPiper PA-18A · Gilkey River, AKNTSB MKC77FCQ49Accident · Minor injuriesClosedPiper PA-22 · Larned, KSNTSB CHI77DEP46Accident · No injuriesClosedGrum Amer AA1B · Waunakee, WINTSB SEA77FA042Accident · 1 fatalClosedKr-2 · Arlington, WANTSB OAK77FVD46Accident · Serious injuriesClosedNelson Perl PG-185 · Livermore, CANTSB OAK77FA044Accident · 2 fatalClosedPiper PA-32R · Tahoe Paradise, CANTSB MKC77FA031Accident · 3 fatalClosedBeech C35 C35 · Omaha, NENTSB MIA77FLD77Accident · No injuriesClosedCessna 150 · Tarpon Springs, FLNTSB FTW77FPA21Accident · 1 fatalClosedWolf-Hirth HI-27 · Sherman, TXNTSB CHI77FEV39Accident · No injuriesClosedStits Plyboy · Beardstown, ILNTSB ANC77DAG92Accident · Serious injuriesClosedPiper PA-20 · Skwentna, AKNTSB SEA77DYM52Accident · No injuriesClosedHiller Acft UH-12C · Albany, ORNTSB OAK77FA043Accident · 4 fatalClosedPiper PA-28 · Jackpot, NVNTSB MKC77DCJ31Accident · No injuriesClosedCessna A188A · Rising City, NENTSB FTW77FPG71Accident · No injuriesClosedGrumman G-164A · Stuttgart, ARNTSB ANC77FA062Accident · 1 fatalClosedBrittnorman BN-2H · Ruby, AKNTSB NYC77DNA23Accident · Minor injuriesClosedCessna 150 · Block Island, RINTSB LAX77DUQ44Accident · No injuriesClosedSchweizer SGS233 · Rosamond, CANTSB FTW77FPG69Accident · Minor injuriesClosedCessna 411 · Paragould, ARNTSB CHI77FEE35Accident · Serious injuriesClosedGrumman AA1B · Crestwood, ILNTSB NYC77FFJ34Accident · Minor injuriesClosedCessna 172 · Williamstown, NYNTSB MIA77FLG23Accident · Serious injuriesClosedCessna 140 · Isle Of Palms, SCNTSB ANC77FA060Accident · 2 fatalClosedPiper PA-14 · Wasilla, AKNTSB NYC77DHO21Accident · No injuriesClosedEnstrom F28A · Toms River, NJNTSB NYC77DHD20Accident · No injuriesClosedGrum Amer AA1-B · Lakewood, NJNTSB NYC77FNA22Accident · No injuriesClosedPiper PA-18 · Oak Bluffs, MANTSB MKC77FCA29Accident · No injuriesClosedCessna A188B · Senath, MONTSB NYC77FHM20Accident · Minor injuriesClosedCessna 150 · Teterboro, NJNTSB MIA77FKQ22Accident · No injuriesClosedCessna A188 · Winterville, MSNTSB CHI77FEV38Accident · No injuriesClosedCessna 182 · Watseka, ILNTSB MKC77FTK31Accident · Minor injuriesClosedPiper J5A · Rapid City, SDNTSB MKC77FCD30Accident · No injuriesClosedBeech 35 · Clinton, IANTSB MIA77FKT52Accident · Minor injuriesClosedPiper PA-25 · Homestead, FLNTSB DEN77FA047Accident · 1 fatalClosedCessna TU206C · Vaughn, NMNTSB MIA77FKG44Accident · Minor injuriesClosedBellanca 8KCAB · Jonesboro, GANTSB IAD77FA051Accident · 1 fatalClosedGrum Amer AA5-A · Warrenton, VANTSB DEN77FQA42Accident · Serious injuriesClosedCessna 150L · Gallup, NMNTSB CHI77FEM32Accident · Minor injuriesClosedPiper PA-28 · St. Helen, MINTSB CHI77FA058Accident · 1 fatalClosedPiper PA-28 · Clayton, ILNTSB ANC77FA055Accident · 1 fatalClosedPiper PA-28 · Tyonek, AKNTSB SEA77DYK18Accident · Minor injuriesClosedM-Saulnier MS893E · Fields, OR