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 IAD76FLQ23Accident · No injuriesClosedPiper PA-28 · Richmond, KYNTSB CHI76FEM45Accident · No injuriesClosedPiper PA-24 · St James, MINTSB SEA76AS054Accident · 3 fatalClosedCessna 172B · Curlew, WANTSB IAD76FKM34Accident · Serious injuriesClosedTaylorcraft BC12-D · Stokesdale, NCNTSB CHI76FEA38Accident · No injuriesClosedGrum Amer AA-5 · Mccordsville, INNTSB NYC76FGT21Accident · No injuriesClosedPiper PA-22 · Tower City, PANTSB FTW76DPJ38Accident · No injuriesClosedPiper PA-28 · Boise City, OKNTSB CHI76FEI31Accident · Minor injuriesClosedPiper PA-28 · Warren, OHNTSB MIA76DLD59Accident · Serious injuriesClosedBelden B-8M · Mulberry, FLNTSB IAD76FID27Accident · Serious injuriesClosedCessna 172 · Suffolk, VANTSB FTW76DPG59Accident · No injuriesClosedGrumman G-164A · Holly Grove, ARNTSB DEN76FTM33Accident · No injuriesClosedPiper PA-34 · Bullfrog Basin, UTNTSB CHI76FEA36Accident · Minor injuriesClosedCessna T210H · Indianapolis, INNTSB MKC76DER66Accident · Minor injuriesClosedCessna 150 · Little Fork, MNNTSB MKC76DCJ38Accident · No injuriesClosedPiper PA-28 · Hallam, NENTSB DEN76DTM34Accident · No injuriesClosedCessna 172M · Manila, UTNTSB MIA76FLA51Accident · No injuriesClosedMooney M20E · Cross City, FLNTSB LAX76IL081Incident · No injuriesClosedGrumman G-21A · Long Beach, CANTSB FTW76DRA44Accident · No injuriesClosedCessna 182 · Houston, TXNTSB NYC76DFA37Accident · No injuriesClosedPiper PA-28 · Hudson, NYNTSB OAK76FVM39Accident · No injuriesClosedCessna 172K · Moffett Nas, CANTSB MIA76FKQ31Accident · No injuriesClosedCessna A188B · Hollandale, MSNTSB SEA76AS051Accident · 4 fatalClosedStinson 108-1 · Burley, IDNTSB NYC76FNE20Accident · No injuriesClosedPiper PA-12 · Pittsfield, MANTSB IAD76FID25Accident · Serious injuriesClosedAero Comdr 100 · Shipman, VANTSB MKC76DCJ33Accident · No injuriesClosedCessna 150 · Omaha, NENTSB IAD76FID26Accident · Minor injuriesClosedBoeing A75 · Cape Charles, VANTSB ANC76DAA36Accident · Minor injuriesClosedPiper PA-18 · Healy, AKNTSB ANC76AA090Accident · No injuriesClosedBeech E18S · Kodiak, AKNTSB IAD76DKW32Accident · Minor injuriesClosedCessna 140 · Jasper, TNNTSB MKC76FCG73Accident · No injuriesClosedMonocoupe D-145 · Grain Valley, MONTSB FTW76FPG52Accident · Minor injuriesClosedPiper PA-25 · Hickory Plains, ARNTSB CHI76FEM42Accident · Serious injuriesClosedPiper J-3 · Sparta, MINTSB OAK76DVG80Accident · No injuriesClosedGrumman G-164A · Marysville, CANTSB FTW76DPG54Accident · No injuriesClosedCessna 150 · Bay, ARNTSB ANC76FAH13Accident · Serious injuriesClosedBellanca 7GCBC · Eagle River, AKNTSB NYC76FHA33Accident · No injuriesClosedLuscombe 8A · Skippack, PANTSB MKC76FCG72Accident · No injuriesClosedCessna U206F · Harrisonville, MONTSB NYC76FNC50Accident · Serious injuriesClosedCessna 177 · Swans Island, MENTSB OAK76DVM38Accident · No injuriesClosedBensen B8M · Salinas, CANTSB NYC76FFA35Accident · No injuriesClosedStinson 108-1 · Johnstown, NYNTSB MIA76FKT71Accident · Serious injuriesClosedBeech 35 · Naples, FLNTSB FTW76FRJ25Accident · Minor injuriesClosedGrum Amer AA1-B · Panola, TXNTSB FTW76O0006Accident · 3 fatalClosedDehavilland DHC-2 · Acapulco, MexicoNTSB NYC76FFJ24Accident · No injuriesClosedPiper PA-22 · Lancaster, NYNTSB ANC76DAH14Accident · No injuriesClosedBeech C23 · Glenallen, AKNTSB FTW76FRD45Accident · Minor injuriesClosedDierrea · Broussard, LANTSB CHI76DEP30Accident · Minor injuriesClosedCessna 150 · Albany, WINTSB OAK76DVG70Accident · Minor injuriesClosedGrumman G-164A · Butte City, CANTSB LAX76FVA62Accident · 1 fatalClosedPiper PA-25 · Delano, CA