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 LAX81DUG35Accident · Minor injuriesClosedQuickie 472 · Corona, CANTSB ANC81FA074Accident · 3 fatalClosedDouglas DC-3 · Pilot Point, AKNTSB CHI81FA070Accident · 5 fatalClosedCessna 401 · Muskegon, MINTSB ATL81FKQ18Accident · No injuriesClosedCessna A188B · Carpenter, MSNTSB ANC81FA073Accident · Serious injuriesClosedDehavilland DHC-2 · Anchorage, AKNTSB LAX81DVG47Accident · No injuriesClosedGrumman G-164 · Colusa, CANTSB CHI81FEI23Accident · Minor injuriesClosedLuscombe 8A · Northfield, OHNTSB ATL81FLJ11Accident · Minor injuriesClosedErco 415-E · Southport, NCNTSB CHI81FEC29Accident · Minor injuriesClosedCessna 152 · Linden, MINTSB CHI81FA068Accident · 4 fatalClosedGrum Amer AA-5A · Mccordsville, INNTSB NYC81FHM09Accident · Minor injuriesClosedEngr & Rsch 415-D · Matawan, NJNTSB DEN81FA045Accident · 2 fatalClosedBeech C35 · Spanish Forks, UTNTSB CHI81FEM23Accident · Serious injuriesClosedSonerai II · Escanaba, MINTSB SEA81DYM30Accident · Serious injuriesClosedPiper PA-18 · Cove, ORNTSB SEA81DYA13Accident · No injuriesClosedCessna 188A · Richfield, IDNTSB NYC81FA063Accident · Serious injuriesClosedDouglas DC-3 · West Deering, NHNTSB NYC81FA062Accident · 2 fatalClosedAerostar 601P · Oxford, CTNTSB DEN81FTM30Accident · No injuriesClosedPiper PA-28 · Roosevelt, UTNTSB DEN81FTM31Accident · No injuriesClosedNavion A · West Jordan, UTNTSB MKC81DCQ43Accident · No injuriesClosedBell 47G-2 · Sublette, KSNTSB MKC81DCD21Accident · No injuriesClosedCessna 152 · Arlington, IANTSB FTW81FPM13Accident · Minor injuriesClosedPiper PA-28 · Tulsa, OKNTSB CHI81FEC28Accident · Serious injuriesClosedCessna U206F · Plymouth, MINTSB DEN81DTK12Accident · No injuriesClosedPiper PA-28 · Langford, SDNTSB CHI81FA066Accident · 1 fatalClosedPiper PA-32R · Crystal, MNNTSB LAX81DUJ70Accident · No injuriesClosedGrumman G-164B · Yuma, AZNTSB ATL81FKG27Accident · No injuriesClosedPiper PA-28 · Dahlonega, GANTSB DEN81FA041Accident · 1 fatalClosedCessna T210L · Sioux Falls, SDNTSB SEA81FA041Accident · No injuriesClosedPiper PA-24 · Bellevue, WANTSB LAX81FUJ67Accident · Minor injuriesClosedGuppy SNS-2 · Tucson, AZNTSB FTW81FRG43Accident · Minor injuriesClosedPiper PA-23 · Carrizo Sprgs, TXNTSB CHI81DEM22Accident · No injuriesClosedMaule M-5 · Gaylord, MINTSB ATL81FKG25Accident · No injuriesClosedCessna 172F · Statesboro, GANTSB CHI81FEX17Accident · No injuriesClosedCessna 402 · Jeffersonville, INNTSB NYC81FA056Accident · No injuriesClosedBeech G18S · New Cumberland, PANTSB MIA81DKT83Accident · No injuriesClosedGrumman G-164A · Immokalee, FLNTSB CHI81DER44Accident · No injuriesClosedCessna A188 · Thief Rvr Fall, MNNTSB SEA81DYA12Accident · Serious injuriesClosedPiper PA-25 · Rockford, IDNTSB ATL81FIJ09Accident · Serious injuriesClosedBaby Ace D · S.Charleston, WVNTSB NYC81FGT05Accident · No injuriesClosedPiper PA-28 · Annville, PANTSB FTW81DPG43Accident · Serious injuriesClosedJunior Ace 6E · Salem, ARNTSB ATL81DLG10Accident · No injuriesClosedCessna 150 · North, SCNTSB FTW81FRG48Accident · No injuriesClosedPiper PA-28 · Lampasas, TXNTSB FTW81FA102Accident · No injuriesClosedPiper PA-31P · Dallas, TXNTSB NYC81FHA15Accident · No injuriesClosedBeech V35B · Stockton, NJNTSB NYC81FA060Accident · 1 fatalClosedChance Vogt F4U-4 · Stratford, CTNTSB MKC81DCQ41Accident · Minor injuriesClosedGrumman AA-5A · Beaumont, KSNTSB CHI81FA063Accident · 1 fatalClosedBeech F33A · Spring Valley, ILNTSB CHI81DEE38Accident · No injuriesClosedPiper PA-25 · Paw Paw, ILNTSB LAX81DXQ19Accident · Minor injuriesClosedCessna 182 · Truckee, CA