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 LAX82DUM03Accident · No injuriesClosedCessna 140 · Barrett Lake, CANTSB FTW82DRA11Accident · No injuriesClosedCessna U206G · Houston, TXNTSB FTW82DRA09Accident · No injuriesClosedPiper PA-28 · Beaumont, TXNTSB CHI82FEC06Accident · No injuriesClosedGrumman AA5B · Jackson, MINTSB LAX82FUD02Accident · No injuriesClosedCessna 172N · Santa Monica, CANTSB MIA821A011Incident · No injuriesClosedLockheed L-1011 · San Juan, PRNTSB MIA82FKT03Accident · No injuriesClosedCessna 172RG · Miami, FLNTSB MKC82DA002Accident · No injuriesClosedBoeing 727 · St Louis, MONTSB ATL82IA003Incident · No injuriesClosedBoeing 737 · Greensboro, NCNTSB MIA81FKT05Accident · No injuriesClosedCessna 172M · Opa Locka, FLNTSB MIA81DKA09Accident · No injuriesClosedCurtis-Wrt C-46 · St.Croix, VINTSB LAX81FVG67Accident · No injuriesClosedCessna 182Q · Placerville, CANTSB NYC81FHJ19Accident · No injuriesClosedBeech A36 · White Plains, NYNTSB CHI81DEP46Accident · No injuriesClosedPiper PA-22 · La Pointe, WINTSB NYC81FGM30Accident · Minor injuriesClosedBell 47G-2A · Hollidaysburg, PANTSB FTW81DRG65Accident · No injuriesClosedCessna 421B · Crystal City, TXNTSB ANC81FA110Accident · No injuriesClosedLockheed Ga 382 · Yakutat, AKNTSB ATL81FKJ34Accident · No injuriesClosedCessna 172 · Bay Minette, ALNTSB SEA81DYM39Accident · No injuriesClosedGeo. Mccall KR-2 · La Grande, ORNTSB CHI81FEI28Accident · No injuriesClosedCessna 310R · Cleveland, OHNTSB CHI81FA092Accident · No injuriesClosedHawker Sdly 748 · Chicago, ILNTSB CHI81DEC39Accident · No injuriesClosedCessna 182 · Lapeer, MINTSB ANC81DA090Accident · No injuriesClosedCessna 206 · Yakutat, AKNTSB DEN81FTK17Accident · No injuriesClosedHiller Acft FH1100 · Sioux Falls, SDNTSB LAX81FVW15Accident · No injuriesClosedPiper PA-32 · Henderson, NVNTSB NYC81FHJ11Accident · No injuriesClosedMaule M-4 · Farmingdale, NYNTSB CHI81DEE47Accident · No injuriesClosedCessna 172A · Romeoville, ILNTSB ATL81FLG16Accident · No injuriesClosedPiper PA-28 · Summerville, SCNTSB SEA81FA047Incident · No injuriesClosedPiper PA-34 · Boise, IDNTSB NYC81FHJ10Accident · No injuriesClosedPiper PA-32R · Farmingdale, NYNTSB ATL81FKJ23Accident · No injuriesClosedStinson 108-2 · Huntsville, ALNTSB FTW81DRD33Accident · No injuriesClosedCessna 180J · Morgan City, LANTSB NYC81FNA19Accident · No injuriesClosedBell 47G-3B · Pawtucket, RINTSB LAX81FUQ25Accident · No injuriesClosedBell 47G-2 · Agua Dulce, CANTSB ANC81DAG52Accident · No injuriesClosedCessna 180 · Copenhagen Ck, AKNTSB CHI81FEK22Accident · No injuriesClosedPiper PA-28 · Columbus, OHNTSB ATL81DA085Accident · No injuriesClosedBell 47G-4 · Jackson, MSNTSB FTW81DQG38Accident · No injuriesClosedCessna R172K · Milnesand, NMNTSB ANC81DA070Accident · No injuriesClosedDehavilland DHC-2 · Juneau, AKNTSB ANC81DA065Accident · Serious injuriesClosedCessna 185 · Bethel, AKNTSB LAX81IA100Incident · No injuriesClosedDouglas DC-9 · Burbank, CANTSB ANC81DAG63Accident · No injuriesClosedPiper PA-18 · Copper Center, AKNTSB FTW81IA103Incident · No injuriesClosedAerospatial SE3160 · Ruidoso, NMNTSB LAX81DVG43Accident · No injuriesClosedCessna 150 · Winters, CANTSB CHI81DEP23Accident · No injuriesClosedBeech C23 · Rockton, ILNTSB MIA81FLD48Accident · No injuriesClosedEnstrom F-28A · Vero Beach, FLNTSB FTW81IA101Incident · No injuriesClosedBoeing B-727 · Dallas, TXNTSB LAX81FVD27Accident · No injuriesClosedPiper PA-28 · Sonoma, CANTSB LAX81DUQ23Accident · No injuriesClosedSikorsky S-58 · Tehachapi, CANTSB FTW81FQG34Accident · No injuriesClosedPiper PA-34 · Amarillo, TX