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 FTW78DRA26Accident · No injuriesClosedCessna A188B · El Campo, TXNTSB CHI78FA044Accident · 1 fatalClosedCessna 206G · East Tawas, MINTSB OAK78FVG46Accident · No injuriesClosedBeech 19A · Butte City, CANTSB OAK78DXQ25Accident · No injuriesClosedPiper PA-25 · Lovelock, NVNTSB MKC78FA045Accident · 2 fatalClosedCessna 170B · Isle, MNNTSB CHI78FEE42Accident · Minor injuriesClosedStearman B75N1 · Oak Brook, ILNTSB SEA78DYP29Accident · No injuriesClosedGrum Amer AA5-A · Prosser, WANTSB MKC78FTG08Accident · No injuriesClosedBeech C55 · Grand Forks, NDNTSB LAX78FA052Accident · 1 fatalClosedPiper PA-11 · Tonopah, AZNTSB MKC78FA042Accident · 2 fatalClosedSwift GC-1B · Piedmont, MONTSB MIA78FLA36Accident · Minor injuriesClosedPiper PA-28R · St.Simons, GANTSB LAX78FUG30Accident · Serious injuriesClosedCessna 177RG · Upland, CANTSB LAX78DUJ65Accident · No injuriesClosedGrum Amer AA1 · Tucson, AZNTSB DEN78FTM21Accident · 1 fatalClosedBede BD5 · Wendover, UTNTSB CHI78FEE40Accident · 1 fatalClosedGrum Amer AA1-B · Antioch, ILNTSB ANC78DAG83Accident · No injuriesClosedCessna 172 · Sparrevohn Sfo, AKNTSB OAK78FVM29Accident · Serious injuriesClosedTaylorcraft BC1265 · Watsonville, CANTSB MKC78FCD29Accident · Minor injuriesClosedGrumman AA-5 · Goldfield, IANTSB CHI78FA043Accident · 4 fatalClosedPiper PA-22 · Saint Helen, MINTSB ANC78DAG60Accident · No injuriesClosedPiper PA-18 · Horseshoe Lake, AKNTSB LAX78FA053Accident · Minor injuriesClosedRkwl Intl 500-S · Chula Vista, CANTSB DEN78FTM22Accident · No injuriesClosedBeech B23 · Nephi, UTNTSB IAD78FIG09Accident · No injuriesClosedBeech B23 · Gaithersburg, MDNTSB FTW78FRD31Accident · No injuriesClosedGrumman G-164A · Kaplan, LANTSB FTW78FPM10Accident · Serious injuriesClosedGlobe Swift GC-1B · Tulsa, OKNTSB IAD78FIG08Accident · Minor injuriesClosedDehavilland DH82C · Cumberland, MDNTSB MKC78FCD26Accident · No injuriesClosedCessna 150 · Ladora, IANTSB NYC78FA059Accident · 1 fatalClosedStol UC-1 · Champion, PANTSB MKC78FTK16Accident · Serious injuriesClosedCessna 188 · Hayes, SDNTSB MKC78FER49Accident · Serious injuriesClosedPiper PA-28R · Warroad, MNNTSB SEA78FTI17Accident · No injuriesClosedCessna 188B · Chinook, MTNTSB LAX78FUG32Accident · No injuriesClosedPiper PA-32 · Big Bear City, CANTSB IAD78FA067Accident · Serious injuriesClosedBoeing 727 · Erlanger, KYNTSB CHI78FEE44Accident · Serious injuriesClosedTaylorcraft BC12-D · Aurora, ILNTSB LAX78DUJ57Accident · Minor injuriesClosedStinson 108-3 · Camp Verde, AZNTSB UNK78X0120Accident · No injuriesClosedCessna 152 · Tres Herms, St. Pierre & MiquelonNTSB MKC78FA038Accident · 1 fatalClosedPiper PA-28 · Scott City, KSNTSB MIA78DKT51Accident · No injuriesClosedLake LA-4 · Pahokee, FLNTSB MIA78FKQ11Accident · No injuriesClosedWaco UPF-7 · Meridian, MSNTSB FTW78DRD28Accident · No injuriesClosedGrumman G-164A · Oberlin, LANTSB DEN78FQA23Accident · No injuriesClosedPiper PA-28 · Albuquerque, NMNTSB MIA78FA085Accident · 1 fatalClosedAmer Avco AA-1B · Clearwater, FLNTSB LAX78FUD05Accident · Serious injuriesClosedCessna 182 · Compton, CANTSB FTW78DRG41Accident · No injuriesClosedCessna 177 · Yorktown, TXNTSB LAX78FA047Accident · 1 fatalClosedVolpar C-45H · Lake Elsinore, CANTSB FTW78FRG39Accident · 3 fatalClosedDehaviland DHC-3 · Del Rio, TXNTSB FTW78FRD25Accident · No injuriesClosedGrumman G-164A · Basile, LANTSB OAK78FA031Accident · No injuriesClosedHandly Page HP 137 · Sacramento, CANTSB NYC78FA051Accident · Minor injuriesClosedPiper PA-28 · Royalton, NYNTSB FTW78FQG29Accident · 1 fatalClosedHughes 369HS · Brownfield, TX