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 SEA78FYM41Accident · Serious injuriesClosedPiper PA-22 · Grand Ronde, ORNTSB OAK78DVG56Accident · No injuriesClosedGrumman G-164 · Willows, CANTSB NYC78FA068Accident · No injuriesClosedPiper PA-28 · Millville, NJNTSB FTW78FQG39Accident · No injuriesClosedPiper PA-28 · Plainview, TXNTSB CHI78FET25Accident · Minor injuriesClosedPiper PA-28 · Griffith, INNTSB IAD78FID10Accident · Minor injuriesClosedCessna 150D · Williamsburg, VANTSB CHI78FEE54Accident · No injuriesClosedCessna 152 · Wheeling, ILNTSB DEN78FTE67Accident · Minor injuriesClosedCessna 150H · Montrose, CONTSB MKC78FER63Accident · Minor injuriesClosedWeatherly 201C · Angus, MNNTSB OAK78DXQ36Accident · No injuriesClosedBeech B-23 · Ft.Ruby, NVNTSB FTW78DPG53Accident · No injuriesClosedGrum-Amer AA1-B · Pocahontas, ARNTSB OAK78FA035Accident · 4 fatalClosedCessna 182P · S Lake Tahoe, CANTSB IAD78FID09Accident · Serious injuriesClosedBellanca 8KCAB · Mechanicsville, VANTSB FTW78FPM17Accident · Serious injuriesClosedRearwin 8135 · Owasso, OKNTSB FTW78FPM16Accident · Serious injuriesClosedCessna 177 · Pawhuska, OKNTSB ANC78DAG77Accident · No injuriesClosedCessna 185 · Anchorage, AKNTSB IAD78FLQ20Accident · Serious injuriesClosedPiper PA-22 · Hazard, KYNTSB DEN78FTM25Accident · Minor injuriesClosedAerospatial SA315B · Evanston, WYNTSB NYC78FA065Accident · 1 fatalClosedCessna 177A · Newfane, NYNTSB MKC78FCA33Accident · Minor injuriesClosedPiper PA-25 · Harviell, MONTSB MIA78FLG25Accident · Serious injuriesClosedPiper J3C · Harleyville, SCNTSB DEN78FTE68Accident · No injuriesClosedCessna 177RG · Broomfield, CONTSB CHI78FEI23Accident · 1 fatalClosedPiper PA-28 · South Bass Is, OHNTSB MKC78FCQ27Accident · 3 fatalClosedBeech V35 · Hillsboro, KSNTSB ANC78DAG81Accident · Minor injuriesClosedCessna 185 · Gulkana, AKNTSB MKC78FCA31Accident · No injuriesClosedGrumman G-164 · Grayridge, MONTSB FTW78FQG35Accident · No injuriesClosedCessna 150M · Lubbock, TXNTSB NYC78FHJ14Accident · Serious injuriesClosedPiper PA-28 · Coram, NYNTSB LAX78FA055Accident · 2 fatalClosedBellanca 7GCBC · Santa Paula, CANTSB SEA78DYA15Accident · No injuriesClosedPiper PA-18 · Rexbury, IDNTSB ANC78DAG94Accident · No injuriesClosedPiper PA-12 · Homer, AKNTSB MKC79DER57Accident · No injuriesClosedPiper PA-25 · Mahnomen, MNNTSB LAX78DUJ71Accident · Minor injuriesClosedGrum Amer AA-5 · Chilchinbeto, AZNTSB OAK78IA056Incident · No injuriesClosedDouglas DC-4 · Honolulu, HINTSB NYC78FGT09Accident · Minor injuriesClosedBeech A23 · State College, PANTSB CHI78DEP38Accident · No injuriesClosedPiper PA-18 · Lake Winnebego, WINTSB MIA78FLG23Accident · No injuriesClosedGrumman G-164B · Lane, SCNTSB MIA78FKT58Accident · Minor injuriesClosedAero Comdr 100 · Stuart, FLNTSB FTW78DRD35Accident · No injuriesClosedPiper PA-25 · Osceola, ARNTSB MIA78FLG21Accident · Serious injuriesClosedCessna 150L · Columbia, SCNTSB FTW78FRJ20Accident · No injuriesClosedCessna A188B · Jones, LANTSB FTW78DPG43Accident · No injuriesClosedGrumman G-164A · St.Charles, ARNTSB CHI78DEE45Accident · No injuriesClosedCessna 170B · Kewanee, ILNTSB IAD78FLJ14Accident · Serious injuriesClosedTaylorcraft BC12D · Liberty, NCNTSB IAD78DKM13Accident · No injuriesClosedPiper PA-28 · Morganton, NCNTSB DEN78FTC24Accident · No injuriesClosedBeech V35 · Jackson Hole, WYNTSB SEA78FYP32Accident · Minor injuriesClosedPiper J3C-65 · Moses Lake, WANTSB DEN78FA049Accident · 3 fatalClosedFairchild C-119G · Greybull, WYNTSB MIA78FKJ48Accident · No injuriesClosedGrumman G-164 · Elmore, ALNTSB OAK78DVG50Accident · No injuriesClosedPiper PA-36 · Davis, CA