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 NYC75AN013Accident · 2 fatalClosedAmer Avco AA1-B · Holbrook, NYNTSB FTW75FQG12Accident · No injuriesClosedPiper PA-23 · Dalhart, TXNTSB CHI75FEP09Accident · No injuriesClosedPitts S1S · Fon Du Lac, WINTSB CHI75FEE05Accident · No injuriesClosedJurca P-51 · Blue Island, ILNTSB CHI75FEP06Accident · No injuriesClosedPiper PA-28 · Beloit, WINTSB UNK74X0116Accident · No injuriesClosedPiper PA-23 · Virgin Gorda, U.S. Virgin IslandsNTSB OAK75AP004Accident · 3 fatalClosedBeech A35 · Selma, CANTSB MKC75AK005Accident · 2 fatalClosedAmer Avco AA1-B · Kansas City, MONTSB CHI75FEM02Accident · No injuriesClosedEnstrom F-28A · Walker, MINTSB CHI75FEA04Accident · No injuriesClosedCessna 177 · Mooresville, INNTSB MIA75FLG06Accident · No injuriesClosedCessna A188B · Fairfax, SCNTSB MIA75DKG06Accident · No injuriesClosedCessna 188 · Hawkinsville, GANTSB FTW75OPA06Accident · Minor injuriesClosedPiper PA-32 · Mazatlan, MexicoNTSB FTW75FQG11Accident · Serious injuriesClosedCessna 182E · White Deer, TXNTSB DEN75FQA09Accident · Minor injuriesClosedNavion A · Aztec, NMNTSB FTW75DQG14Accident · No injuriesClosedAero Comdr 681 · Canyon, TXNTSB CHI75DEP03Accident · No injuriesClosedCessna A188 · Nekoosa, WINTSB MKC75FTG05Accident · No injuriesClosedAmer Avco AA1-B · Fargo, NDNTSB MIA74DKJ04Accident · Serious injuriesClosedPiper J3C · Guntersville, ALNTSB DEN75DTE08Accident · No injuriesClosedCessna 182 · Crestd Butte, CONTSB CHI75FEA03Accident · Minor injuriesClosedStarks S1 · Zionsville, INNTSB NYC75FHD08Accident · Minor injuriesClosedCessna 177 · Smithville, NJNTSB NYC75AN008Accident · Serious injuriesClosedPiper PA-32 · Manchester, VTNTSB LAX75DUJ17Accident · No injuriesClosedPiper PA-25 · Stanfield, AZNTSB FTW75FQG07Accident · Serious injuriesClosedPiper PA-25 · Spearman, TXNTSB DEN75FTM02Accident · No injuriesClosedBeech B50 · Salt Lake City, UTNTSB CHI75FEE03Accident · Serious injuriesClosedNavion B · Blue Island, ILNTSB SEA75FYE04Accident · 1 fatalClosedSorrell JA3-80 · Arlington, WANTSB IAD75DIA12Accident · No injuriesClosedCessna 310J · Mexico City, MexicoNTSB SEA75DTA03Accident · No injuriesClosedPiper PA-18 · Ft.Peck, MTNTSB MIA74FLG05Accident · No injuriesClosedPiper J3L · Landrum, SCNTSB IAD75FIJ01Accident · No injuriesClosedPiper PA-22 · Fayetteville, WVNTSB SEA75FYE03Accident · Minor injuriesClosedCessna 150F · Buckley, WANTSB SEA75FYC03Accident · No injuriesClosedHiller Acft UH-12E · Dayton, ORNTSB FTW75DRG05Accident · No injuriesClosedGrumman 164-A · San Benito, TXNTSB CHI75FEI02Accident · Serious injuriesClosedPiper PA-28 · Grafton, OHNTSB LAX75FUQ02Accident · Serious injuriesClosedFokker DR-1 · Tehachapi, CANTSB CHI75DEM03Accident · No injuriesClosedAeronca S65-CA · Cheboygan, MINTSB NYC75FHM02Accident · Serious injuriesClosedPiper PA-23 · Montgomery, NYNTSB NYC75DNA04Accident · Minor injuriesClosedCessna 150L · Stow, MANTSB MKC75DCQ07Accident · No injuriesClosedRobinson MERE-M · Maize, KSNTSB MKC75DCJ08Accident · Minor injuriesClosedErco 415-C · Hartington, NENTSB MIA75FLA03Accident · No injuriesClosedPiper PA-28 · Destin, FLNTSB CHI75FEE04Accident · Minor injuriesClosedEmeraude CP301 · Elgin, ILNTSB CHI75FEE02Accident · Serious injuriesClosedBeech E18S · Lansing, ILNTSB NYC75FFA03Accident · Minor injuriesClosedDehavilland DHC-1B · Massena, NYNTSB LAX74AL003Accident · 2 fatalClosedPiper PA-28 · Grnd Canyon, AZNTSB FTW75DRJ02Accident · No injuriesClosedCessna A188 · Mangham, LANTSB CHI75DEC03Accident · No injuriesClosedCessna 150L · Onsted, MINTSB CHI75AC006Accident · 1 fatalClosedPiper PA-28 · Columbia, IL