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 NYC74AN034Accident · 2 fatalClosedBeech 65-A80 · Cincinnati, OHNTSB CHI74FEC18Accident · Minor injuriesClosedCessna 120 · Stockbridge, MINTSB MKC74FCA14Accident · No injuriesClosedCessna 172M · Shelbyville, MONTSB MIA74DKG40Accident · No injuriesClosedCessna 172L · Thomson, GANTSB FTW74FPG34Accident · No injuriesClosedBeech 65-90 · De Queen, ARNTSB FTW74FRD16Accident · No injuriesClosedCessna 150L · Clinton, LANTSB NYC74FNA23Accident · Minor injuriesClosedButterworth Teenie · W.Kingston, RINTSB ANC74DAG70Accident · No injuriesClosedCessna 185 · Ugashik, AKNTSB FTW74FPA05Accident · No injuriesClosedAero Comdr S-2R · Waco, TXNTSB MIA74FKG41Accident · No injuriesClosedHughes 269A · Hartwell, GANTSB NYC74FFJ14Accident · Minor injuriesClosedCessna 150H · Warsaw, NYNTSB IAD74FKW18Accident · Serious injuriesClosedCessna 150H · Cleveland, TNNTSB FTW74FPJ11Accident · 1 fatalClosedPiper J-3 · Elk City, OKNTSB ANC74FAA20Accident · No injuriesClosedBellanca 7GCBC · Fairbanks, AKNTSB NYC74FHA11Accident · Serious injuriesClosedPiper PA-28R · Lehighton, PANTSB FTW74DPA10Accident · Minor injuriesClosedPiper PA-11 · Waxahachie, TXNTSB DEN74FTE25Accident · Serious injuriesClosedPiper PA-32 · Aspen, CONTSB CHI74FEC17Accident · Minor injuriesClosedPiper PA-28 · Lapeer, MINTSB LAX74FUM04Accident · No injuriesClosedTaylorcraft BL-65 · Calipatria, CANTSB FTW74DRJ15Accident · No injuriesClosedGrumman G-164 · Mer Rouge, LANTSB DEN74FTE23Accident · No injuriesClosedPiper PA-32 · Eagle, CONTSB ANC74AA037Accident · Minor injuriesClosedGrumman G-44 · Kodiak, AKNTSB DEN74FTC15Accident · No injuriesClosedBeech 65-A90 · Casper, WYNTSB NYC74FFJ08Accident · No injuriesClosedPiper PA-28 · Owego, NYNTSB MIA74AM028Accident · 2 fatalClosedCessna 150H · Gulfport, MSNTSB ANC74DAG63Accident · Minor injuriesClosedCessna 150 · Susitna, AKNTSB FTW74FRJ14Accident · Minor injuriesClosedBeech V35B · Hughes Spring, TXNTSB IAD74DKM20Accident · No injuriesClosedAmer Avco AA-5 · Taylorsville, NCNTSB LAX74FUJ25Accident · 1 fatalClosedCessna 150 · Scottsdale, AZNTSB NYC74AN031Accident · 2 fatalClosedPiper PA-24 · Montoursville, PANTSB SEA74FVC18Accident · No injuriesClosedPiper PA-28 · Salem, ORNTSB FTW74FRD14Accident · No injuriesClosedPiper PA-25 · Norwood, LANTSB OAK74AP011Accident · 1 fatalClosedBell 47G2 · Pacifica, CANTSB MKC74AK012Accident · 3 fatalClosedGates Lear 25 · Lincoln, NENTSB SEA74DTA09Accident · No injuriesClosedCessna 170B · Glasgow, MTNTSB LAX74DUQ14Accident · No injuriesClosedPiper PA-18A · Mojave, CANTSB IAD74FID16Accident · No injuriesClosedAeronca 7AC · South Hill, VANTSB OAK74DVA23Accident · No injuriesClosedPiper PA-24 · Mnache Mdws, CANTSB MIA74FKT20Accident · No injuriesClosedPiper PA-32 · Ft Lauderdale, FLNTSB LAX74FUJ20Accident · Minor injuriesClosedBowers Fly Baby · Ashfork, AZNTSB IAD74FLJ18Accident · Minor injuriesClosedCessna 172 · Sanford, NCNTSB NYC74FGT08Accident · No injuriesClosedPiper PA-28R · Deer Lake, PANTSB DEN74DQA18Accident · No injuriesClosedAero Comdr 100 · Albuquerque, NMNTSB MKC74DER16Accident · No injuriesClosedCessna 140 · Osage, MNNTSB FTW74AF017Accident · 6 fatalClosedBeech E18S · Natchitoches, LANTSB CHI74FEE20Accident · Serious injuriesClosedBeech 35 · Streator, ILNTSB OAK74DVW07Accident · No injuriesClosedBeech 19 · Las Vegas, NVNTSB SEA74FYE15Accident · Serious injuriesClosedCessna 150L · Federal Way, WANTSB NYC74FHJ12Accident · Minor injuriesClosedBensen B8-M · East Moriches, NYNTSB MKC74FER14Accident · Serious injuriesClosedCessna 120 · Ulen, MN