NTSB investigations
6,400 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 MIA74DKT40Accident · No injuriesClosedBeech D18S · Freeport, Burkina FasoNTSB MIA74DKA11Accident · No injuriesClosedGrumman G-164 · Ponce, PRNTSB MIA74FKA04Accident · No injuriesClosedHiller Acft UH-12A · St Thomas, VINTSB LAX74OL034Accident · Serious injuriesClosedPiper PA-28 · Buena Vista, MexicoNTSB NYC74FHM07Accident · Minor injuriesClosedCessna 310F · Neptune, NJNTSB NYC74DHJ15Accident · No injuriesClosedCessna 150 · Deerpark, NYNTSB NYC74DHJ13Incident · No injuriesClosedPiper PA-32 · Farmingdale, NYNTSB MKC74FER11Accident · No injuriesClosedCessna 150H · St Paul, MNNTSB OAK74DVA18Accident · No injuriesClosedPiper PA-22 · Kettleman, CANTSB MKC74DER09Accident · Serious injuriesClosedCessna 182A · Lake Elmo, MNNTSB FTW74FPJ09Accident · No injuriesClosedCessna 140A · Bethany, OKNTSB ANC74DAG26Accident · No injuriesClosedMaule M4210C · Anchorage, AKNTSB NYC74FHM03Accident · No injuriesClosedEnstrom F-28A · Teterboro, NJNTSB IAD74DKM15Accident · No injuriesClosedCessna 175 · Charlotte, NCNTSB MKC74AK007Accident · No injuriesClosedPiper PA-30 · Kansas City, MONTSB MKC74DTG05Accident · Minor injuriesClosedCessna 140A · Minot, NDNTSB FTW74DPJ07Accident · No injuriesClosedChampion 7GCBC · Seminole, OKNTSB CHI74FEK04Accident · No injuriesClosedCessna 180D · Columbus, OHNTSB MIA74DKJ74Accident · No injuriesClosedCessna 150 · Ider, ALNTSB IAD74AI010Accident · No injuriesClosedPiper PA-28R · Churchville, MDNTSB MIA74DLD17Accident · Minor injuriesClosedCessna 182 · Sanford, FLNTSB LAX74FUA02Accident · No injuriesClosedCessna 150 · Santa Ana, CANTSB FTW74FRG13Accident · No injuriesClosedGrumman G-164 · Port Lavaca, TXNTSB CHI74FEC05Accident · No injuriesClosedBeech TC-45J · Detroit, MINTSB MKC74FER03Accident · No injuriesClosedCessna 310J · Owatonna, MNNTSB CHI74DET02Accident · Serious injuriesClosedJeanies TWO · Merriville, INNTSB FTW74DPG07Accident · No injuriesClosedPiper PA-31 · West Helena, ARNTSB MIA74DKT05Accident · No injuriesClosedPiper PA-24 · Placida, FLNTSB CHI74FEM11Accident · No injuriesClosedCessna 150L · Grand Rapids, MINTSB MKC74DCG03Accident · No injuriesClosedCessna 207 · Kansas City, MONTSB MIA74DKG07Accident · No injuriesClosedCessna 172 · St.Simons Isle, GANTSB LAX74FUM01Accident · No injuriesClosedCessna 180 · San Diego, CANTSB OAK74DVG04Accident · No injuriesClosedCessna 140 · Georgetown, CANTSB FTW74FRA01Accident · No injuriesClosedBoeing A75 · Winnie, TXNTSB MIA74DKG03Accident · No injuriesClosedCessna 150 · Swainsboro, GANTSB MIA74DKA01Accident · No injuriesClosedAeronca 7FC · Ponce, PRNTSB NYC74FHD05Accident · No injuriesClosedPiper PA-30 · Philadelphia, PANTSB CHI74FEK01Accident · Minor injuriesClosedCessna 172D · Kenton, OHNTSB FTW74FPG01Accident · No injuriesClosedPiper PA-11 · Lewisville, ARNTSB LAX73DUQ42Accident · No injuriesClosedCessna 150 · Vandnbg Afb, CANTSB LAX73DUQ41Accident · Minor injuriesClosedBeech 23 · Van Nuys, CANTSB IAD73FIQ35Accident · No injuriesClosedGreat Lakes 2T-1R · Louisville, KYNTSB MIA73DKJ73Accident · No injuriesClosedCessna 411 · Tuscaloosa, ALNTSB MIA74DLA50Accident · No injuriesClosedCessna 150 · Ferandina B, FLNTSB DEN74DTE11Accident · No injuriesClosedCessna 150 · Sterling, CONTSB LAX73DUQ40Accident · No injuriesClosedChampion 7FC · Mojave, CANTSB NYC73AN152Accident · No injuriesClosedDouglas DC-8 · Boston, MANTSB IAD73AI018Accident · No injuriesClosedBeech E18S · Covington, KYNTSB MKC73DER70Accident · No injuriesClosedCessna 172K · Ranier, MNNTSB CHI73AC094Accident · No injuriesClosedBeech E18S · Chicago, IL