NTSB investigations
18,851 cases where the phase of flight was Maneuvering.
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 = 450)
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 = 450)
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 FTW74DRD28Accident · Serious injuriesClosedGrumman G-164A · Lake Charles, LANTSB FTW74AF074Accident · 2 fatalClosedPiper PA-22 · Dublin, TXNTSB OAK74DVG42Accident · No injuriesClosedGrumman G-164A · Williams, CANTSB SEA74FYC44Accident · 1 fatalClosedPiper J3C-65 · Cornelius, ORNTSB OAK74FVG43Accident · 2 fatalClosedStits SA6B · Clear Lake, CANTSB LAX74FUQ35Accident · 1 fatalClosedStarduster SA-100 · Santa Paula, CANTSB FTW74DYC52Accident · No injuriesClosedBell 47G3B1 · Lebanon, ORNTSB OAK74DVA57Accident · Minor injuriesClosedPiper PA-22 · Cholame, CANTSB MIA74DKG74Accident · No injuriesClosedBell 47G · Blue Ridge, GANTSB SEA74DYE44Accident · Minor injuriesClosedBell 47G3B1 · Forks, WANTSB OAK74FVW15Accident · Serious injuriesClosedBeech B19 · Panaca, NVNTSB UNK74X0103Incident · No injuriesClosedPiper PA-32 · Montego B, JamaicaNTSB CHI74AC080Accident · 2 fatalClosedChampion 7ECA · Xenia, OHNTSB OAK74DVA51Accident · No injuriesClosedAlouette Iiib · Turlock, CANTSB FTW74DPD39Accident · No injuriesClosedHiller Acft UH-12A · Gouldbusk, TXNTSB CHI74FEA34Accident · Serious injuriesClosedCessna 210J · Lafayette, INNTSB LAX74DVA50Accident · No injuriesClosedStearman A75 · Pixley, CANTSB LAX74DUG48Accident · No injuriesClosedCessna A188 · Vidal, CANTSB FTW74DPG52Accident · No injuriesClosedPiper PA-25 · Pine Bluff, ARNTSB FTW74DQG44Accident · No injuriesClosedPiper PA-25 · Farwell, TXNTSB OAK74FVM20Accident · Serious injuriesClosedCessna A188 · Castroville, CANTSB OAK74DVD28Accident · No injuriesClosedBell 47G-5 · Stockton, CANTSB MIA74FKG64Accident · Serious injuriesClosedCessna 337 · Mcrae, GANTSB CHI74DEA38Accident · No injuriesClosedPitts S-1S · New Castle, INNTSB SEA74FYC39Accident · No injuriesClosedHiller Acft UH-12E · Sublimity, ORNTSB FTW74FPJ22Accident · Serious injuriesClosedPiper PA-22 · Anadarko, OKNTSB SEA74FYC38Accident · Serious injuriesClosedCallair A-9B · Beaverton, ORNTSB FTW74AF067Accident · 1 fatalClosedCessna 150L · Houston, TXNTSB DEN74AD042Accident · 1 fatalClosedCessna 172A · Silver City, NMNTSB MIA74FKQ13Accident · Serious injuriesClosedPiper PA-25 · Crawford, MSNTSB LAX74DUA19Accident · Minor injuriesClosedHughes 269A · Long Beach, CANTSB OAK74DVA47Accident · No injuriesClosedBoeing B75 · Piedra, CANTSB MIA74FLD69Accident · Minor injuriesClosedCessna 150 · Titusville, FLNTSB FTW74FRA31Accident · 1 fatalClosedGrumman G-164A · Buckeye, TXNTSB MKC74DCQ30Accident · Minor injuriesClosedPiper PA-25 · Oxford, KSNTSB OAK74DVM18Accident · No injuriesClosedGrumman G-164 · San Lucas, CANTSB IAD74AI048Accident · 1 fatalClosedCessna 150G · Jewell Ridge, VANTSB FTW74AF064Accident · 1 fatalClosedPiper PA-15 · Elsa, TXNTSB OAK74FJA16Accident · No injuriesClosedHughes 269B · Lihue, HINTSB MKC74AK051Accident · 1 fatalClosedCessna 414 · Lebanon, MONTSB FTW74FRG64Accident · Serious injuriesClosedPiper PA-18 · Loma Alta, TXNTSB DEN74AD036Accident · 1 fatalClosedBellanca 7KCAB · Canon City, CONTSB FTW74FRA27Accident · Serious injuriesClosedGrumman G-164A · Brookshire, TXNTSB OAK74DVG25Accident · No injuriesClosedBoeing A75N1 · Capay, CANTSB MKC74AK046Accident · 1 fatalClosedPiper PA-18 · Wabasha, MNNTSB CHI74FEA26Accident · Serious injuriesClosedPiper PA-28 · Indianapolis, INNTSB IAD74DLQ24Accident · Minor injuriesClosedBell 47J-2 · Royalton, KYNTSB MIA74AM063Accident · 1 fatalClosedCessna A150L · Melbourne, FLNTSB MIA74FLD59Accident · Serious injuriesClosedPiper J3 · Titusville, FLNTSB MKC74FER36Accident · Serious injuriesClosedCessna 175 · Fairmont, MN