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 CHI80FER66Accident · No injuriesClosedCessna A188B · Garden City, MNNTSB FTW80FRG66Accident · No injuriesClosedPiper PA-23 · Austin, TXNTSB FTW80FPM17Accident · No injuriesClosedPiper PA-25 · Henryetta, OKNTSB FTW80FPD42Accident · Serious injuriesClosedCessna 172 · Fort Worth, TXNTSB NYC80FFJ13Accident · No injuriesClosedBellanca 17-30 · Akron, NYNTSB FTW80FPJ32Accident · No injuriesClosedCessna 150G · Norman, OKNTSB ATL80DID28Accident · Minor injuriesClosedCessna A188B · Virginia Beach, VANTSB NYC80IA073Incident · No injuriesClosedFairchild F-27 · Flushing, NYNTSB MKC80FA050Accident · Serious injuriesClosedRallye MS893E · New Virginia, IANTSB CHI80FEM42Accident · Serious injuriesClosedPiper PA-28 · Harrison, MINTSB CHI80FEV35Accident · No injuriesClosedWeatherly 201C · Colusa, ILNTSB CHI80FET26Accident · No injuriesClosedPiper PA-32R · Syracuse, INNTSB ATL80FKW19Accident · 1 fatalClosedErco 415-C · Nashville, TNNTSB NYC80DA072Accident · No injuriesClosedPiper PA-38 · W Hampton Bch, NYNTSB MKC80DCQ30Accident · No injuriesClosedGrumman G-164B · Cimarron, KSNTSB CHI80DEX30Accident · No injuriesClosedGrumman AA-1B · Mooresville, INNTSB FTW80FA105Accident · 2 fatalClosedCessna 172M · Caddo, OKNTSB ANC80DAG69Accident · No injuriesClosedPiper PA-18 · Cantwell, AKNTSB CHI80FEP51Accident · Serious injuriesClosedPitts S-1C · Fond Du Lac, WINTSB CHI80FEI36Accident · 1 fatalClosedDehavilland DHC-1B · Salem, OHNTSB CHI80FEC30Accident · No injuriesClosedBeech C23 · Pontiac, MINTSB MIA80FLD89Accident · Minor injuriesClosedPiper PA-38 · Vero Beach, FLNTSB ANC80DAG96Accident · Serious injuriesClosedPiper PA-18 · Palmer, AKNTSB CHI80FEK24Accident · Minor injuriesClosedPiper PA-28 · Bellefonatine, OHNTSB ATL80FKJ26Accident · Serious injuriesClosedGrumman G-164B · Autaugaville, ALNTSB FTW80DRD57Accident · No injuriesClosedCessna 188B · Port Barre, LANTSB MIA80FLD87Accident · Serious injuriesClosedErco 415-C · Kissimmee, FLNTSB LAX80DXQ39Accident · No injuriesClosedPiper PA-28R · Mammoth Lakes, CANTSB LAX80DUM24Accident · No injuriesClosedAero Comdr S2R · Brawley, CANTSB ATL80FA084Accident · 2 fatalClosedBellanca 7KCAB · Lake Norman, NCNTSB SEA80FA040Accident · 4 fatalClosedAerofab LA-4-2 · Cascade Locks, ORNTSB LAX80DUG50Accident · Serious injuriesClosedSchweizer SGS126 · Rabbit Dry Lk, CANTSB LAX80DUJ89Accident · No injuriesClosedCessna 188B · Hyder, AZNTSB LAX80DUA17Accident · No injuriesClosedN American SNJ-5 · Long Beach, CANTSB NYC80FHM22Accident · Minor injuriesClosedPiper PA-30 · Lagrangeville, NYNTSB LAX80FVD34Accident · No injuriesClosedCassutt Iiim · Sonoma, CANTSB FTW80DRJ31Accident · No injuriesClosedStearman B75 · Tallulah, LANTSB ATL80FIG14Accident · No injuriesClosedPiper PA-28R · Chester, MDNTSB LAX80FUJ87Accident · Minor injuriesClosedAyers S-2R · Coolidge, AZNTSB FTW80DRD53Accident · No injuriesClosedCessna 180 · Empire, LANTSB NYC80FHM23Accident · No injuriesClosedPiper PA-28 · Hanover, NJNTSB LAX80FJA23Accident · Serious injuriesClosedHiller UH-12E · Honolulu, HINTSB DEN80FTE67Accident · No injuriesClosedBeech A23-24 · Greeley, CONTSB LAX80DXQ38Accident · No injuriesClosedBeech B19 · S.Lake Tahoe, CANTSB NYC80FA064Accident · 1 fatalClosedCessna 305A · Farmingdale, NYNTSB LAX80FVA57Accident · Minor injuriesClosedCessna 172M · Columbia, CANTSB LAX80FUD11Accident · Minor injuriesClosedCessna 152 · Santa Monica, CANTSB CHI80FEI32Accident · Minor injuriesClosedQuickie 1 · Wadsworth, OHNTSB ATL80FLA05Accident · No injuriesClosedCessna A188B · Moultrie, GANTSB ATL80DKM25Accident · Minor injuriesClosedPiper PA-38 · Morganton, NC