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 MIA81FLD23Accident · No injuriesClosedCessna 150L · Tampa, FLNTSB LAX81FA045Accident · Serious injuriesClosedPiper PA-31 · Prescott, AZNTSB FTW81DRG18Accident · Minor injuriesClosedQuickie 01 · New Braunfels, TXNTSB NYC81FHM02Accident · No injuriesClosedPiper PA-28 · Spring Valley, NYNTSB MKC81FCQ12Accident · No injuriesClosedCessna 401B · Goodland, KSNTSB ATL81FIG06Accident · No injuriesClosedCessna 310G · Mitchellville, MDNTSB NYC81FNE08Accident · Serious injuriesClosedCessna 182 · Ellington, CTNTSB LAX81FA044Accident · Serious injuriesClosedBeech A36TC · Santa Cruz, CANTSB LAX81DUG12Accident · Minor injuriesClosedVarieze II · Chino, CANTSB FTW81DPD09Accident · Minor injuriesClosedRockwell 112A · Ringgold, TXNTSB MIA81FA042Accident · 6 fatalClosedCessna 172 · Ft Lauderdale, FLNTSB ANC81DAG23Accident · No injuriesClosedPiper PA-18 · Wasilla, AKNTSB LAX81FA043Accident · 1 fatalClosedCessna T210 · Quincy, CANTSB ATL81FLJ04Accident · Minor injuriesClosedStinson 108 · Havelock, NCNTSB NYC81FA022Accident · Minor injuriesClosedCessna 152 · Lake Ronknkoma, NYNTSB MKC81DCD06Accident · No injuriesClosedWilliams Quicki · Newton, IANTSB LAX81DVG15Accident · Minor injuriesClosedMaule M5-210 · Lower Lake, CANTSB FTW81FRJ08Accident · Minor injuriesClosedCessna 152 · Nacogdoches, TXNTSB ANC81DAG22Accident · Serious injuriesClosedPiper PA-32 · Iliamna, AKNTSB ANC81FAA08Accident · No injuriesClosedPiper PA-18 · Galena, AKNTSB MIA81FA040Accident · 1 fatalClosedBeech G35 · St.Petersburg, FLNTSB FTW81FRA15Accident · No injuriesClosedAero Comdr 700 · Palacios, TXNTSB NYC81FNA09Accident · No injuriesClosedPiper PA-28R · Falmouth, MANTSB LAX81FA040Accident · 1 fatalClosedPiper PA-28 · Hanford, CANTSB CHI81FEM07Accident · Minor injuriesClosedPiper J3C-65 · Atlanta, MINTSB FTW81FPM07Accident · Minor injuriesClosedCessna 150M · Sand Springs, OKNTSB ATL81FLQ10Accident · Minor injuriesClosedAero Comdr 100 · Berea, KYNTSB DEN81FTM06Accident · Minor injuriesClosedAeronca 7AC · Levan, UTNTSB LAX81FUG07Accident · Serious injuriesClosedCessna 150 · Rialto, CANTSB ATL81FLQ09Accident · No injuriesClosedCessna 172E · Fort Knox, KYNTSB LAX81FUA03Accident · No injuriesClosedCessna 172 · Fullerton, CANTSB FTW81FPA05Accident · Minor injuriesClosedPiper PA-38 · Fink, TXNTSB LAX81FA029Accident · 5 fatalClosedPiper PA-34 · El Cajon, CANTSB FTW81FA020Accident · No injuriesClosedBell 206B · Patterson, LANTSB CHI81FEG04Accident · No injuriesClosedCessna 337P · Miamisburg, OHNTSB MIA81FLD21Accident · No injuriesClosedCessna 172N · Cedar Key, FLNTSB ATL81IA032Incident · No injuriesClosedConvair 580 · Norfolk, VANTSB FTW81FRA12Accident · No injuriesClosedPiper PA-22 · Cleveland, TXNTSB CHI81FER09Accident · No injuriesClosedBeech A23 · Stanton, MNNTSB LAX81FUG06Accident · No injuriesClosedHiller Acft UH-12B · Rialto, CANTSB CHI81FEM04Accident · No injuriesClosedCessna 172N · Pellston, MINTSB ATL81DID09Accident · Minor injuriesClosedCessna 150 · Woolwine, VANTSB DEN81FTE14Accident · Minor injuriesClosedCessna 177 · Brighton, CONTSB CHI81FEK07Accident · 1 fatalClosedSorrel SNS-2 · Columbus Grove, OHNTSB MIA81FA028Accident · Serious injuriesClosedDouglas DC3A · Miami, FLNTSB CHI81FEI08Accident · No injuriesClosedCessna 182 · Ravenna, OHNTSB FTW81FRG13Accident · No injuriesClosedCessna 172N · Laredo, TXNTSB MKC81FCQ06Accident · No injuriesClosedPiper PA-28 · Wellington, KSNTSB LAX81FUJ15Accident · Serious injuriesClosedMonerai S · Eloy, AZNTSB LAX81DVM06Accident · No injuriesClosedPiper PA-38 · San Martin, CA