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 MKC73FCG11Accident · Minor injuriesClosedCessna 172 · Shell Knob, MONTSB CHI73AC021Accident · Serious injuriesClosedFord MTR 4-AT-B · Port Clinton, OHNTSB OAK73FVW06Accident · No injuriesClosedPiper PA-34 · Boulder City, NVNTSB LAX73FUQ07Accident · Minor injuriesClosedVultee BT-13A · Lancaster, CANTSB CHI73AC020Accident · 2 fatalClosedPiper PA-24 · Ada, OHNTSB OAK73FVG11Accident · Serious injuriesClosedAeronca 7AC · Rio Linda, CANTSB OAK73FJA05Accident · 1 fatalClosedCessna 150L · Honolulu, HINTSB NYC73FGM05Accident · Minor injuriesClosedCessna 140 · Slippery Rock, PANTSB CHI73FEM12Accident · No injuriesClosedErco 415-C · Wayland, MINTSB SEA73DYA08Accident · No injuriesClosedAeronca 11AC · Rupert, IDNTSB OAK73AP005Accident · 3 fatalClosedPiper PA-28 · Mammoth Lks, CANTSB MKC73FER11Accident · No injuriesClosedCessna 170 · Rosemount, MNNTSB NYC73AN028Accident · 5 fatalClosedCessna 172I · Hopedale, MANTSB DEN73FQA14Accident · Minor injuriesClosedPiper PA-28 · Counselors, NMNTSB MKC73FTK03Accident · Serious injuriesClosedAeronca 7BCM · Sisseton, SDNTSB SEA73FTI05Accident · Minor injuriesClosedPiper PA-18 · Deer Lodge, MTNTSB NYC73FNA18Accident · Minor injuriesClosedAero Comdr 100 · Jamestown, RINTSB MIA73FKG24Accident · Serious injuriesClosedThorp T-18 · Marietta, GANTSB OAK73FXQ08Accident · Serious injuriesClosedCessna 150G · So.Lk Tahoe, CANTSB MIA73FKG22Accident · No injuriesClosedPiper PA-18 · Cordele, GANTSB CHI73DEE15Accident · No injuriesClosedCessna 150G · Naperville, ILNTSB NYC73DHJ06Accident · No injuriesClosedTaylorcraft BC12D1 · Stony Brook, NYNTSB MIA73FLD06Accident · Minor injuriesClosedPiper PA-25 · Ft Pierce, FLNTSB NYC73FNA11Accident · Serious injuriesClosedCessna 177 · Nantucket, MANTSB OAK73FVD11Accident · Minor injuriesClosedBeech C23 · Concord, CANTSB MIA73OKT13Accident · No injuriesClosedHelio Acft H-295 · S.Salvador, Burkina FasoNTSB MIA73AM015Accident · 1 fatalClosedCessna 177 · Jackson, MSNTSB FTW73FPG12Accident · No injuriesClosedGrumman G-164 · Wynne, ARNTSB ANC73DAG34Accident · No injuriesClosedHelio Acft H-391B · Chitina, AKNTSB CHI73FEP14Accident · Serious injuriesClosedChampion 7GCBC · Baraboo, WINTSB MIA73AM014Accident · 5 fatalClosedCessna 421 · Cleveland, TNNTSB SEA73AS003Accident · 5 fatalClosedCessna 170B · Issaquah, WANTSB FTW73FRA07Accident · No injuriesClosedCessna 140 · Houston, TXNTSB DEN73FTE13Accident · Serious injuriesClosedPiper J3C-65 · Berthoud, CONTSB ANC73DAG08Accident · No injuriesClosedPiper PA-12 · Iliamna, AKNTSB MIA73DKG20Accident · No injuriesClosedAero Comdr A-9B · Vienna, GANTSB DEN73FQA09Accident · No injuriesClosedPiper PA-28R · Santa Fe, NMNTSB CHI73FEP08Accident · Minor injuriesClosedMooney M20E · Waukesha, WINTSB ANC73DAG19Accident · Minor injuriesClosedPiper PA-18 · Mc Grath, AKNTSB NYC73FNA09Accident · Serious injuriesClosedPiper PA-28 · Haverhill, MANTSB DEN73FQA08Accident · Serious injuriesClosedPiper PA-24 · Las Vegas, NMNTSB DEN73AD005Accident · 3 fatalClosedCessna 310D · Denver, CONTSB FTW73DRG06Accident · No injuriesClosedPiper PA-24 · Pflugerville, TXNTSB FTW73DPG06Accident · No injuriesClosedGrumman G-164 · Weiner, ARNTSB CHI73FER02Accident · Serious injuriesClosedTaylorcraft BL-65 · Rice Lake, WINTSB CHI73FEP05Accident · Serious injuriesClosedGanagobie 3 · Oshkosh, WINTSB NYC73AN018Accident · 2 fatalClosedTaylorcraft L-2B · No.Andover, MANTSB MKC73DCD14Accident · No injuriesClosedPiper PA-28 · Moorland, IANTSB MIA73FKT09Accident · No injuriesClosedBeech A23-24 · Sanibel, FLNTSB LAX73FUG07Accident · Serious injuriesClosedCessna 177 · Corona, CA