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 SEA74FYA33Accident · Serious injuriesClosedPiper PA-25 · Grandview, IDNTSB FTW74AF086Accident · 2 fatalClosedCessna 182A · Imperial, TXNTSB FTW74ORG87Accident · No injuriesClosedCessna 150 · San Carlos, MexicoNTSB ANC74DAH12Accident · No injuriesClosedPiper PA-20 · Mcgrath, AKNTSB FTW74FRD43Accident · No injuriesClosedPiper PA-36 · Chataignier, LANTSB MKC74FCD32Accident · Minor injuriesClosedPiper PA-25 · Anita, IANTSB IAD74DKM55Accident · Serious injuriesClosedPiper PA-22 · Albemarle, NCNTSB FTW74FDJ28Accident · Serious injuriesClosedCessna 185E · Yukon, OKNTSB FTW74AF085Accident · 1 fatalClosedCessna 150L · Abita Springs, LANTSB CHI74FEK26Accident · No injuriesClosedBell 47D1 · Circleville, OHNTSB MIA74AM095Accident · Serious injuriesClosedPiper PA-30 · Atlanta, GANTSB LAX74FUQ40Accident · Serious injuriesClosedCessna 182 · San Frnando, CANTSB FTW74DRG84Accident · No injuriesClosedWeatherly 201 · Pearsall, TXNTSB FTW74FRD38Accident · No injuriesClosedGrumman G-164 · Livonia, LANTSB FTW74FPA24Accident · No injuriesClosedPiper PA-16 · Dallas, TXNTSB FTW74DRG86Accident · No injuriesClosedBeech E35 · Henly, TXNTSB FTW74FRD37Accident · No injuriesClosedGrumman G-164 · Opelousas, LANTSB DEN74FQA45Accident · No injuriesClosedPiper PA-23 · Albuquerque, NMNTSB NYC74FFJ33Accident · Serious injuriesClosedAmer Avco AA1-B · Ashville, NYNTSB OAK74AP061Accident · 4 fatalClosedPiper PA-24 · S Lk Tahoe, CANTSB CHI74AC089Accident · 4 fatalClosedBeech B55 · Cleveland, OHNTSB MIA74DKQ21Accident · No injuriesClosedCessna A188A · Duncan, MSNTSB OAK74FXQ36Accident · No injuriesClosedPiper PA-28 · Truckee, CANTSB MKC74DCQ39Accident · No injuriesClosedPiper PA-28 · Neodesha, KSNTSB CHI74DEC45Accident · No injuriesClosedCessna 150E · Lincoln, MINTSB MIA74FKG77Accident · No injuriesClosedLet-Np-K L-13 · Monroe, GANTSB LAX74FUM32Accident · Serious injuriesClosedBeech A23-19 · San Diego, CANTSB FTW74FQD23Accident · Serious injuriesClosedCessna 172 · Acala, TXNTSB FTW74FQG53Accident · No injuriesClosedPiper PA-28 · Lubbock, TXNTSB DEN74DTE86Accident · No injuriesClosedPiper PA-25 · Center, CONTSB OAK74DVD41Accident · No injuriesClosedCallair A-9 · Lockeford, CANTSB MKC74AK065Accident · 1 fatalClosedCessna 150L · Kranzburg, SDNTSB ANC74AAH06Accident · Minor injuriesClosedPiper PA-12 · Anchorage, AKNTSB FTW74FRD34Accident · No injuriesClosedPiper PA-36 · Chataignier, LANTSB FTW74DQG64Accident · No injuriesClosedCessna 188A · Panhandle, TXNTSB LAX74FUF52Accident · 1 fatalClosedStits SA-3A · Rubidoux, CANTSB IAD74FID38Accident · No injuriesClosedPiper PA-22 · Forest, VANTSB CHI74DEI38Accident · No injuriesClosedAeronca 7AC · Northfield, OHNTSB CHI74DEC43Accident · No injuriesClosedCessna 172 · Goodells, MINTSB LAX74DUG53Accident · No injuriesClosedHoward DGA15P · Lk Elsinore, CANTSB MIA74DKT76Accident · No injuriesClosedCessna 207 · Opa Locka, FLNTSB FTW74AF078Accident · 3 fatalClosedPiper PA-28 · Honobia, OKNTSB NYC74FGM27Accident · Minor injuriesClosedCessna 182D · Meyersdale, PANTSB FTW74DPM23Accident · No injuriesClosedCessna 172 · Honobia, OKNTSB CHI74DEA36Accident · No injuriesClosedAmer Avco AA-1B · English, INNTSB MIA740KT81Accident · No injuriesClosedPiper PA-23 · Marsh Hbr, Burkina FasoNTSB FTW74DRD32Accident · No injuriesClosedGrumman G-164A · Abbeville, LANTSB FTW74AF076Accident · 6 fatalClosedBeech 99 · Galveston, TXNTSB SEA74AS039Accident · 4 fatalClosedCessna 172K · Gold Beach, ORNTSB OAK74DVA63Accident · No injuriesClosedCallair A-5 · Kerman, CA