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 FTW76DPH09Accident · No injuriesClosedCessna 180 · Walnut Ridge, ARNTSB ANC76FAA56Accident · Minor injuriesClosedStinson 108-2 · Delta Junction, AKNTSB FTW76FRD65Accident · No injuriesClosedCessna A185F · Lafayette, LANTSB NYC76FGM48Accident · No injuriesClosedPiper PA-28 · Mount Pleasant, PANTSB CHI76FEV62Accident · Serious injuriesClosedVolksplane VP-1 · Metropolis, ILNTSB ANC76DAA61Accident · Minor injuriesClosedPilatus PC6BH2 · Wainwright, AKNTSB OAK76AP067Accident · Serious injuriesClosedCessna 402B · Molokai, HINTSB LAX76DUK04Accident · No injuriesClosedCessna 150 · Prescott, AZNTSB IAD76DLQ32Accident · No injuriesClosedAmerican AA-1 · Murray, KYNTSB SEA76FYA46Accident · 4 fatalClosedPiper PA-22 · American Falls, IDNTSB NYC76FGT76Accident · Serious injuriesClosedBowers Fly Baby · Kralltown, PANTSB DEN76AD070Accident · 3 fatalClosedCessna 185 · Sunnyside, UTNTSB MKC76FER92Accident · No injuriesClosedBeech B19 · Hugo, MNNTSB CHI76FEE74Accident · 1 fatalClosedCessna 150M · Lockport, ILNTSB CHI76FEV61Accident · No injuriesClosedPiper PA-25 · Vandalia, ILNTSB MKC76FER90Accident · No injuriesClosedWeatherly 201C · Hollandale, MNNTSB MIA76FLD80Accident · Minor injuriesClosedPiper PA-28 · Sebastian, FLNTSB IAD76FIG24Accident · Serious injuriesClosedSoneria 1 · Frederick, MDNTSB IAD76DKM44Accident · No injuriesClosedPiper PA-24 · Waynesville, NCNTSB MKC76FCA42Accident · Minor injuriesClosedCessna 172M · Centerville, MONTSB IAD76DLQ31Accident · No injuriesClosedPiper PA-28 · Frakes, KYNTSB FTW76DPA31Accident · Minor injuriesClosedGlobe GC-1B · Allen, TXNTSB DEN76ATM45Accident · Serious injuriesClosedAmer Avco AA-1B · Escalante, UTNTSB CHI76FEE72Accident · No injuriesClosedCessna 150J · Hinckley, ILNTSB MKC76FTG26Accident · 1 fatalClosedGrumman G-164A · Minto, NDNTSB NYC76AN123Accident · 1 fatalClosedAeronca 11BC · Bally, PANTSB MIA76FLA64Accident · Minor injuriesClosedPiper PA-28 · Pensacola, FLNTSB FTW76FRD60Accident · Serious injuriesClosedCessna 180 · Gretna, LANTSB FTW76FPM29Accident · Minor injuriesClosedCessna 177 · Tulsa, OKNTSB CHI76FET48Accident · No injuriesClosedCessna 172 · Griffith, INNTSB CHI76FEI46Accident · No injuriesClosedPiper PA-28 · Salem, OHNTSB SEA76DTI37Accident · Minor injuriesClosedPiper PA-28 · Turner, MTNTSB CHI76FEC54Accident · No injuriesClosedPiper PA-28 · Fraser, MINTSB FTW76DPG96Accident · Minor injuriesClosedCessna 172 · Centerville, ARNTSB MIA76FKQ44Accident · No injuriesClosedCessna 188B · Batesville, MSNTSB LAX76DUK01Accident · Serious injuriesClosedPiper PA-28 · Winslow, AZNTSB FTW76DQG99Accident · No injuriesClosedCessna 188 · Veribest, TXNTSB DEN76FTE89Accident · No injuriesClosedCessna 150 · Hanover, CONTSB CHI76FEE70Accident · Minor injuriesClosedCessna 172M · Antioch, ILNTSB MKC76AK074Accident · 1 fatalClosedBeech B55 · Washington, MONTSB IAD76II093Incident · No injuriesClosedBeech B99 · Owensboro, KYNTSB FTW76FRD59Accident · No injuriesClosedCessna A185F · Lafayette, LANTSB OAK76FJA20Accident · 1 fatalClosedBeech M35 · Honolulu, HINTSB ANC76FAA48Accident · No injuriesClosedPiper PA-18 · Nome, AKNTSB ANC76AA122Accident · No injuriesClosedCessna U206 · Anchorage, AKNTSB NYC76FNE31Accident · Serious injuriesClosedLake LA-4 · Grt Barrington, MANTSB MIA76FLA61Accident · Minor injuriesClosedGrum Amer AA-1A · Keystone Higts, FLNTSB FTW76DQG95Accident · No injuriesClosedGrumman G-164A · Olton, TXNTSB CHI76AC085Accident · 1 fatalClosedPiper PA-18 · Tomahawk, WINTSB IAD76AI090Accident · 1 fatalClosedPiper J-3 · Ooltewah, TN