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 IAD78FIA19Accident · 1 fatalClosedPiper PA-28 · Indian Head, MDNTSB DEN78FTF01Accident · No injuriesClosedCessna T337 · Calhan, CONTSB CHI78FEX40Accident · Minor injuriesClosedBell 47G2 · Waveland, INNTSB CHI78FEG17Accident · No injuriesClosedCessna 150 · Germantown, OHNTSB ANC79DAG32Accident · No injuriesClosedNavion NA-1 · Naknek, AKNTSB ANC78FA080Accident · Serious injuriesClosedCessna 170-A · Anchorage, AKNTSB MIA78FKQ39Accident · Serious injuriesClosedCessna 188B · Inverness, MSNTSB SEA78FYA26Accident · No injuriesClosedGrumman G-164B · Homedale, IDNTSB OAK78DVG83Accident · No injuriesClosedGrumman G-164B · Robbins, CANTSB MIA78DKQ40Accident · No injuriesClosedGrumman G-164 · Hollybluff, MSNTSB MKC79FCJ03Accident · No injuriesClosedBell 47-J2 · Cactus Flats, SDNTSB MIA78FKG81Accident · Minor injuriesClosedBeech A23-19 · Juniper, GANTSB MIA78FLG39Accident · Minor injuriesClosedPiper PA-15 · Isle Of Palms, SCNTSB MKC78FER96Accident · Minor injuriesClosedCessna 150 · Belle Plaine, MNNTSB MIA78DKJ90Accident · No injuriesClosedZ-Bird LD-1 · Oneonta, ALNTSB IAD78IA110Incident · No injuriesClosedCessna 310Q · Roanoke, VANTSB ANC78DAH19Accident · No injuriesClosedPiper PA-18 · Iliamna, AKNTSB NYC78FA092Accident · 5 fatalClosedPiper PA-32R · Robbinsville, NJNTSB LAX78DUK05Accident · No injuriesClosedCessna 188 · Parker, AZNTSB FTW78FRD56Accident · No injuriesClosedCessna 150 · Lake Charles, LANTSB SEA78FYK23Accident · Minor injuriesClosedHome Built KR-2 · North Bend, ORNTSB ANC78DAH25Accident · Minor injuriesClosedCessna 180E · Anchorage, AKNTSB MKC78FCJ45Accident · Minor injuriesClosedBeech C35 · Gordon, NENTSB MIA78DKJ89Accident · Minor injuriesClosedGrumman G-164B · Vernon, FLNTSB LAX78DUM36Accident · Minor injuriesClosedCessna A150K · Imperial, CANTSB MKC78FA069Accident · 2 fatalClosedLuscombe 8A · Fayette, MONTSB NYC78DFA30Accident · No injuriesClosedPiper PA-28 · Barneveld, NYNTSB MKC78FCQ39Accident · Serious injuriesClosedLuscombe 8A · Baxter Springs, KSNTSB LAX78DUK03Accident · Serious injuriesClosedPiper PA-22 · Seligman, AZNTSB CHI78FA064Accident · 6 fatalClosedPiper PA-31 · Savoy, ILNTSB IAD78FLT11Accident · No injuriesClosedCessna U206 · Memphis, TNNTSB ANC78DAH20Accident · No injuriesClosedPiper PA-18 · Palmer, AKNTSB MIA78FKQ38Accident · No injuriesClosedGrumman G-164 · Philipp, MSNTSB FTW78FRA39Accident · Serious injuriesClosedCessna 188A · Louise, TXNTSB ANC78DAH21Accident · No injuriesClosedCessna 180 · Talkeetna, AKNTSB NYC78FFA31Accident · Minor injuriesClosedCessna 177B · Lake Placid, NYNTSB ANC78DAH10Accident · No injuriesClosedCessna 185F · Anchorage, AKNTSB MIA78FA121Accident · 2 fatalClosedConvair 240 · Clewiston, FLNTSB FTW78IA074Incident · No injuriesClosedPiper PA-32 · Enid, OKNTSB MKC78DTK36Accident · Minor injuriesClosedCessna 140 · Webster, SDNTSB CHI78FEX35Accident · Serious injuriesClosedCessna 172K · Lanesville, INNTSB UNK78X0135Accident · No injuriesClosedCessna A188B · Greenville, MSNTSB SEA78DYP53Accident · No injuriesClosedCessna 172 · Ephrata, WANTSB NYC78FGM50Accident · No injuriesClosedCessna 175B · Conneaut, PANTSB MKC78FCG63Accident · No injuriesClosedRyan PT-22 · Hiawatha, KSNTSB CHI78FET35Accident · Minor injuriesClosedCessna 152 · Lake Village, INNTSB NYC78FHJ23Accident · Minor injuriesClosedBensen B-8M · Bayport, NYNTSB NYC78FFA29Accident · Minor injuriesClosedBeech E18S · Latham, NYNTSB MKC78DTK35Accident · No injuriesClosedPiper PA-28 · Prairie City, SDNTSB IAD78FA101Accident · Serious injuriesClosedPiper PA-31 · Charlotte, NC