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 ANC81DAA32Accident · No injuriesClosedCessna 170B · Ackerman Lake, AKNTSB FTW81FPA23Accident · Minor injuriesClosedPiper PA-18 · Waxahachie, TXNTSB ANC81DAA35Accident · No injuriesClosedPiper PA-18 · Hodzona River, AKNTSB NYC81DFJ24Accident · No injuriesClosedLuscombe 8E · Nunda, NYNTSB MIA81DLA36Accident · No injuriesClosedAeronca 7AC · Pnte Vdra Bch, FLNTSB CHI81FEI29Accident · No injuriesClosedPiper PA-25 · Kansas, OHNTSB ATL81FA116Accident · 2 fatalClosedPiper PA-38 · Cullman, ALNTSB ATL81FA115Accident · 1 fatalClosedPitts S-1 · Cleveland, TNNTSB ANC81DAG79Accident · No injuriesClosedCessna 185 · Naknek, AKNTSB MKC81FCG56Accident · No injuriesClosedCessna 152 · Liberty, MONTSB LAX81FVG66Accident · Serious injuriesClosedMooney M20E · Red Bluff, CANTSB FTW81FQG62Accident · No injuriesClosedPiper PA-24 · Shallowater, TXNTSB SEA81FA055Accident · 4 fatalClosedCessna 320D · Republic, WANTSB ATL81DID18Accident · No injuriesClosedPiper PA-25 · Carrolton, VANTSB DEN81FTG20Accident · Serious injuriesClosedHomebuilt KR-2 · Bottineau, NDNTSB LAX81FUG50Accident · No injuriesClosedMooney M20J · Big Bear City, CANTSB FTW81DRG68Accident · No injuriesClosedCessna 188B · Tynan, TXNTSB NYC81FNE29Accident · Minor injuriesClosedPiper PA-28 · Berlin, MANTSB FTW81DPD38Accident · Minor injuriesClosedCessna 150F · Fort Worth, TXNTSB ATL81FKQ27Accident · Minor injuriesClosedCessna 188 · Shelby, MSNTSB FTW81FRG63Accident · Serious injuriesClosedMooney M20E · Del Rio, TXNTSB CHI81DER66Accident · Minor injuriesClosedAeronca 15AC · Lake Crystal, MNNTSB NYC81FNC21Accident · Minor injuriesClosedCessna 150 · Carrabassett, MENTSB FTW81FPJ37Accident · No injuriesClosedAero Comdr 100 · Oklahoma City, OKNTSB DEN81FTG18Accident · No injuriesClosedCessna 172 · Bowdon, NDNTSB ANC81DAG77Accident · No injuriesClosedPiper PA-18 · Soldotna, AKNTSB LAX81DXQ35Accident · Serious injuriesClosedPiper PA-22 · Jackpot, NVNTSB ATL81FID17Accident · No injuriesClosedBeech B60 · Danville, VANTSB MKC81DCJ31Accident · No injuriesClosedGulf-Schwzr G-164B · Lamar, NENTSB FTW81DRD40Accident · No injuriesClosedCessna 185F · Lake Arthur, LANTSB DEN81FTI17Accident · Serious injuriesClosedPiper PA-18 · Buffalo, MTNTSB CHI81FEC43Accident · Serious injuriesClosedPitts S-1S · Romeo, MINTSB ANC81DAG74Accident · Minor injuriesClosedCessna 150F · Houston, AKNTSB LAX81DVG63Accident · No injuriesClosedCessna R172K · Chiles Valley, CANTSB FTW81DQG60Accident · No injuriesClosedPiper PA-28 · Texhoma, OKNTSB ANC81DAG72Accident · No injuriesClosedPiper PA-18 · Cantwell, AKNTSB NYC81FGM28Accident · No injuriesClosedCessna 150 · Belle Vernon, PANTSB NYC81FGM27Accident · Serious injuriesClosedCessna 180 · Rockwood, PANTSB FTW81DRD42Accident · Minor injuriesClosedCallair A-9B · Maringouin, LANTSB NYC81FHD36Accident · Serious injuriesClosedMorrisey 2150A · Port Republic, NJNTSB CHI81FA093Accident · 4 fatalClosedCessna 172N · Adrian, MINTSB ATL81FLQ22Accident · Serious injuriesClosedBellanca 7KCAB · Middletown, KYNTSB FTW81FRJ32Accident · Serious injuriesClosedGrumman G-164B · Mer Rouge, LANTSB FTW81FA134Accident · 2 fatalClosedCessna R172E · Bishop, TXNTSB FTW81DRG59Accident · No injuriesClosedCessna 188 · Port Lavaca, TXNTSB ATL81FKQ26Accident · No injuriesClosedCessna A188B · Cleveland, MSNTSB LAX81DUJ96Accident · No injuriesClosedCessna 210 · Prescott, AZNTSB LAX81DUJ95Accident · No injuriesClosedNavion A · Prescott, AZNTSB LAX81DUJ94Accident · Minor injuriesClosedPiper PA-24 · Williams, AZNTSB MIA81FA107Accident · 2 fatalClosedPiper J5A · Carrabelle, FL