NTSB investigations
6,398 cases where the phase of flight was Taxi.
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 = 250)
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 = 250)
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 FTW79DPG49Accident · Minor injuriesClosedCessna 172D · Pine Bluff, ARNTSB OAK79FVW16Accident · No injuriesClosedCessna 182Q · Las Vegas, NVNTSB MKC79IA034Incident · No injuriesClosedBeech 58 · Kansas City, MONTSB LAX79DUJ90Accident · No injuriesClosedCessna 182 · Mesa, AZNTSB MKC79IA031Incident · No injuriesClosedPiper PA-23 · Kansas City, MONTSB SEA79DYE22Accident · No injuriesClosedCessna 185 · Bellevue, WANTSB LAX79DUJ79Accident · No injuriesClosedCessna 140 · Poston, AZNTSB ANC79DAG52Accident · No injuriesClosedPiper PA-12 · Birchwood, AKNTSB MIA79FA084Accident · No injuriesClosedBeech G18S · San Juan, PRNTSB OAK79DXQ14Accident · No injuriesClosedCessna TU206G · Austin, NVNTSB OAK79DVM23Accident · No injuriesClosedCessna 414 · San Francisco, CANTSB FTW79FRA27Accident · Serious injuriesClosedBell 206B · Houston, TXNTSB MIA79DLD61Accident · No injuriesClosedTaylorcraft BC12D · Brooksville, FLNTSB ANC79DAG44Accident · No injuriesClosedCessna 170B · Manokotak, AKNTSB OAK79DVD24Accident · No injuriesClosedPiper PA-31T · Lodi, CANTSB SEA79DYE40Accident · No injuriesClosedCessna 185 · Tolt Reservoir, WANTSB NYC79FGT14Accident · No injuriesClosedPiper PA-18 · Lancaster, PANTSB MKC79DCJ14Accident · No injuriesClosedPiper PA-18 · North Platte, NENTSB DEN79FQA24Accident · No injuriesClosedCessna 402 · Albuquerque, NMNTSB MKC79DER32Accident · No injuriesClosedPiper PA-22 · Hutchinson, MNNTSB MIA79IA067Incident · No injuriesClosedBoeing 707 · Miami, FLNTSB IAD79FID12Accident · No injuriesClosedTed Smith 600 · Richmond, VANTSB FTW79DRA14Accident · Minor injuriesClosedCessna 152 · Houston, TXNTSB LAX79DUJ68Accident · No injuriesClosedCessna 195 · Phoenix, AZNTSB LAX79DU024|LAX79DUQ24Accident · No injuriesClosedAeronca 7AC · Van Nuys, CANTSB NYC79FGT12Accident · No injuriesClosedCessna 172 · New Cumberland, PANTSB MKC79DCQ17Accident · No injuriesClosedCessna 150 · Benton, KSNTSB NYC79FHM14Accident · No injuriesClosedAeronca 11AC · Newburgh, NYNTSB MIA79FKG28Accident · Serious injuriesClosedPiper PA-22 · Lawrenceville, GANTSB NYC79FHJ07Accident · No injuriesClosedGrumman AA5 · Farmingdale, NYNTSB FTW79DRA12Accident · No injuriesClosedGrumman G-164B · Rosharon, TXNTSB MIA79DLA23Accident · No injuriesClosedPiper PA-28 · Tallahassee, FLNTSB FTW79FPJ08Accident · No injuriesClosedCessna 172 · Bethany, OKNTSB CHI79FEM15Accident · No injuriesClosedCessna 172G · Grand Rapids, MINTSB MKC79DCJ12Accident · No injuriesClosedCessna 172 · Kearney, NENTSB SEA79DTI09Accident · No injuriesClosedPiper PA-22 · Turner, MTNTSB DEN79FQA20Accident · No injuriesClosedCessna 172M · Albuqueque, NMNTSB MKC79FCA13Accident · No injuriesClosedBeech E18S · St Louis, MONTSB LAX79DUM07Accident · No injuriesClosedPiper PA-34 · Brawley, CANTSB OAK79FVD14Accident · No injuriesClosedStinson 108-2 · Tiburon, CANTSB SEA79DYE16Accident · No injuriesClosedCessna 150 · Seattle, WANTSB NYC79DFJ11Accident · Minor injuriesClosedPiper PA-22 · Niagara Falls, NYNTSB MIA79DLD46Accident · No injuriesClosedCessna 195 · St Petersburg, FLNTSB MIA79DLD45Accident · No injuriesClosedCessna 182 · Ft Myers, FLNTSB MKC79FCQ16Accident · No injuriesClosedCessna T210 · Coffeyville, KSNTSB FTW79DA057Accident · No injuriesClosedCessna 180J · Morgan City, LANTSB MKC79FCG33Accident · No injuriesClosedCessna 210K · Olathe, KSNTSB MKC79DCA09Accident · No injuriesClosedBellanca 1731AT · Cabool, MONTSB IAD79AA034Accident · Minor injuriesClosedBeech 3NM · Memphis, TNNTSB FTW79FPM08Accident · No injuriesClosedBeech C-45H · Tulsa, OK