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 ATL81FKG22Accident · Minor injuriesClosedCessna 150L · Lawrenceville, GANTSB ATL81FA080Accident · 1 fatalClosedPiper PA-22 · Chapel Hill, NCNTSB DEN81FTM25Accident · Serious injuriesClosedRex Johnson AL-CAT · Salt Lake City, UTNTSB ANC81FA060Accident · 1 fatalClosedBeech G18S · Anvik, AKNTSB ANC81FA059Accident · No injuriesClosedConvair 440 · Dillingham, AKNTSB MKC81DCJ14Accident · No injuriesClosedCessna 188 · Chambers, NENTSB FTW81DQG33Accident · Minor injuriesClosedPiper PA-28 · Afton, TXNTSB MKC81FCQ35Accident · Minor injuriesClosedStinson 108-2 · Valley Center, KSNTSB FTW81FPD25Accident · Minor injuriesClosedCessna 152 · Lewisville, TXNTSB FTW81FA098Accident · 1 fatalClosedAerospatial AS-350 · Cameron, LANTSB CHI81FEV20Accident · Serious injuriesClosedRodgers Soneri · Moweaqua, ILNTSB FTW81DPG36Accident · No injuriesClosedGrumman G-164 · Hughes, ARNTSB FTW81DRA38Accident · No injuriesClosedRockwell S2R · Ganado, TXNTSB ATL81FLT09Accident · Minor injuriesClosedCessna 150 · Bolivar, TNNTSB CHI81FA059Accident · 2 fatalClosedCessna 310R · Grand Rapids, MINTSB FTW81FA095Accident · 2 fatalClosedPiper PA-32 · Moulton, TXNTSB NYC81FHJ07Accident · No injuriesClosedLuscombe 8A · East Moriches, NYNTSB NYC81DNC12Accident · No injuriesClosedPiper PA-18 · Allagash River, MENTSB CHI81FA058Accident · 1 fatalClosedBoeing A75 · Wellington, OHNTSB NYC81FFJ12Accident · Minor injuriesClosedPiper PA-22 · Mayville, NYNTSB CHI81FA057Accident · 1 fatalClosedAero Comdr 560 · Walkerton, INNTSB NYC81FA050Accident · 2 fatalClosedBeech G18S · Hyannis, MANTSB ATL81FA078Accident · No injuriesClosedCessna 337F · Ocean City, MDNTSB ANC81FAA15Accident · Minor injuriesClosedCessna 170A · Fairbanks, AKNTSB MIA81DLD46Accident · Minor injuriesClosedPiper PA-32R · Groveland, FLNTSB MIA81DLD45Accident · No injuriesClosedEagle Acft DW-1 · Sparr, FLNTSB FTW81FPG31Accident · Serious injuriesClosedBeech 95-B55 · Little Rock, ARNTSB MIA81DLD42Accident · No injuriesClosedPiper PA-25 · Anthony, FLNTSB DEN81FA035Accident · 1 fatalClosedBell 206B · Evanston, WYNTSB NYC81FA049Accident · No injuriesClosedCessna 172 · Canandaigua, NYNTSB MIA81FLD41Accident · Serious injuriesClosedCessna 150 · Ft.Myers, FLNTSB FTW81DQG30Accident · No injuriesClosedCessna A188B · Garden City, TXNTSB DEN81FTA07Accident · No injuriesClosedPiper PA-18 · Billings, MTNTSB FTW81FQD22Accident · No injuriesClosedPiper PA-28 · El Paso, TXNTSB ANC81FA053Accident · No injuriesClosedCessna A185E · Anchorage, AKNTSB DEN81FTE35Accident · No injuriesClosedCessna 180 · Parlin, CONTSB CHI81FEM16Accident · No injuriesClosedCessna 152 · Portland, MINTSB MKC81DCJ11Accident · No injuriesClosedGrumman G-164A · Miller, NENTSB MIA81FA071Accident · 1 fatalClosedPiper PA-23 · Hollywood, FLNTSB MIA81DLD38Accident · No injuriesClosedPiper PA-38 · Merritt Island, FLNTSB LAX81FA084Accident · 4 fatalClosedBeech J35 · Burbank, CANTSB FTW81FPD22Accident · Serious injuriesClosedHubschluber I · Grand Prairie, TXNTSB FTW81DQD21Accident · No injuriesClosedCessna 150 · Van Horn, TXNTSB NYC82IHD22Accident · Serious injuriesClosedPiper PA-28 · Bridgeport, NJNTSB FTW81DPJ25Accident · Minor injuriesClosedGrumman G-164 · Burns Flat, OKNTSB FTW81FA086Accident · Serious injuriesClosedPiper PA-60 · San Angelo, TXNTSB MIA81FA069Accident · 1 fatalClosedRobertson T210N · Ft.Pierce, FLNTSB LAX81FUJ60Accident · Serious injuriesClosedCessna T207A · Chinle, AZNTSB SEA81DYP14Accident · No injuriesClosedPiper PA-28 · Coulee City, WANTSB DEN81FTM22Accident · Minor injuriesClosedCessna 177 · Cedar City, SD