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 OAK75AP031Accident · 2 fatalClosedAmer Avco AA1-B · Vacaville, CANTSB MKC75FCD25Accident · No injuriesClosedPiper PA-32 · Clarinda, IANTSB NYC75FNC20Accident · Minor injuriesClosedCessna 172C · West Dover, VTNTSB CHI75DEK16Accident · No injuriesClosedCessna 150 · Findlay, OHNTSB MKC75DER32Accident · No injuriesClosedPiper PA-22 · Marshall, MNNTSB FTW75DPM11Accident · No injuriesClosedCessna 150 · Stilwell, OKNTSB SEA75FYC13Accident · 1 fatalClosedMullan SA-11A · Mcminnville, ORNTSB MIA75FLD38Accident · No injuriesClosedCessna 140 · Merritt Isl, FLNTSB MKC75DCQ25Accident · No injuriesClosedPiper PA-28 · St Francis, KSNTSB NYC75FHD26Accident · Minor injuriesClosedPiper PA-23 · Ocean City, NJNTSB FTW75FRG39Accident · Minor injuriesClosedCessna 310D · Austin, TXNTSB FTW75DRJ20Accident · No injuriesClosedGrumman G-164A · Natchitoches, LANTSB CHI75FET11Accident · No injuriesClosedSikorsky S-52-3 · Valparaiso, INNTSB CHI75FEC24Accident · Serious injuriesClosedPiper J3C-65 · Ypsilanti, MINTSB NYC75FNA25Accident · No injuriesClosedCessna 150L · Millis, MANTSB FTW75FPD19Accident · No injuriesClosedCessna 210 · Jacksboro, TXNTSB NYC75FFS18Accident · No injuriesClosedVolksplane VP1 · Perry, NYNTSB CHI75FEI14Accident · No injuriesClosedPiper PA-24 · Beach City, OHNTSB OAK75DVD29Accident · No injuriesClosedWeatherly 201B · Farmington, CANTSB ANC75FAA18Accident · No injuriesClosedHelio Acft H295 · Tanacross, AKNTSB MIA75FLD33Accident · No injuriesClosedPiper J3C-65 · Plant City, FLNTSB FTW75FPD16Accident · No injuriesClosedPiper PA-22 · N.Richlnd Hls, TXNTSB DEN75FQA19Accident · No injuriesClosedPiper PA-28 · Albuquerque, NMNTSB MIA75FKT25Accident · No injuriesClosedCessna 188 · Naples, FLNTSB ANC75DAA17Accident · No injuriesClosedPiper PA-12 · Livengood, AKNTSB FTW75FPD17Accident · 1 fatalClosedTeenie TWO · Wichita Falls, TXNTSB NYC75FFJ16Incident · No injuriesClosedCessna 140 · Orchard Park, NYNTSB NYC75FFJ15Accident · Minor injuriesClosedAeronca 7AC · W Bloomfield, NYNTSB NYC75AN056Accident · Minor injuriesClosedPiper PA-18 · Patten, MENTSB FTW75FPG28Accident · No injuriesClosedBell 47J-2A · Ft.Smith, ARNTSB OAK75DVG32Accident · No injuriesClosedGrumman G-164A · Knights Ldg, CANTSB NYC75FNC17Accident · Serious injuriesClosedBeech A24R · Augusta, MENTSB OAK75AP016Accident · 2 fatalClosedChampion 7KCAB · Vacaville, CANTSB DEN75DQA18Accident · No injuriesClosedPiper PA-24 · Arrey, NMNTSB DEN75AD022Accident · Minor injuriesClosedBell 47G3B1 · Vernal, UTNTSB CHI75FEC19Accident · Serious injuriesClosedSchleicher AS-K13 · Adrian, MINTSB CHI75AC038Accident · 2 fatalClosedPiper PA-28 · W Carrollton, OHNTSB OAK75FVW08Accident · No injuriesClosedCessna 205 · Sloan, NVNTSB NYC75FNC15Accident · Minor injuriesClosedSchweizer SGS233 · Warren, VTNTSB FTW75DPA13Accident · Minor injuriesClosedPiper PA-32 · Bruceville, TXNTSB OAK75FVD18Accident · 1 fatalClosedGrumman F7F-3 · Rohnerville, CANTSB NYC75FNA22Accident · Serious injuriesClosedCessna 172C · Norwood, MANTSB LAX75FU537Accident · Serious injuriesClosedDuci Sdwndr · Peoria, AZNTSB FTW75DPA12Accident · Minor injuriesClosedHarmon Monopl · Sherman, TXNTSB CHI75FEP28Accident · Serious injuriesClosedPiper PA-23 · Wautoma, WINTSB CHI75FEC18Accident · No injuriesClosedCessna 414 · Jackson, MINTSB NYC75FGM14Accident · No injuriesClosedBeech 65 · Clarion, PANTSB MIA75FKT20Accident · Minor injuriesClosedBellanca 17-31 · Miami, FLNTSB OAK75DVA30Accident · Minor injuriesClosedBell 47G3B2 · Big Creek, CANTSB LAX75AL019Accident · 4 fatalClosedPiper PA-23 · Long Beach, CA