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 SEA75FYA05Accident · Serious injuriesClosedPiper PA-28 · Arco, IDNTSB SEA75FTA05Accident · No injuriesClosedGrumman G-164 · Baker, MTNTSB FTW75FPD02Accident · No injuriesClosedCessna 150F · Springtown, TXNTSB OAK75FVM04Accident · Serious injuriesClosedBell 47G-2A · Gonzales, CANTSB FTW75DQD04Accident · No injuriesClosedPiper PA-25 · Pecos, TXNTSB IAD75FID02Accident · No injuriesClosedPiper PA-18 · Skippers, VANTSB FTW75AF003Accident · 2 fatalClosedAeronca 7AC · Stuttgart, ARNTSB MIA75FKJ05Accident · No injuriesClosedCessna 188 · Tuscaloosa, ALNTSB CHI75FEC05Accident · No injuriesClosedTaylorcraft BL-65 · Mason, MINTSB SEA75DYG04Accident · No injuriesClosedCessna 150 · Selah, WANTSB MKC75DCJ11Accident · No injuriesClosedPiper PA-25 · Gothenburg, NENTSB MIA75FKQ03Accident · 2 fatalClosedBoeing A75N1 · Greenville, MSNTSB FTW75FRJ04Accident · 1 fatalClosedKnight Twst 85B · Mt.Pleasant, TXNTSB MKC75DCJ10Accident · No injuriesClosedSnow S2A · Campbell, NENTSB LAX75DUJ14Accident · Serious injuriesClosedHiller Acft UH-12E · Gadsden, AZNTSB IAD75ALQ03Accident · Minor injuriesClosedBell 47D1 · Clinton, KYNTSB FTW75DQG09Accident · No injuriesClosedPiper PA-25 · Plainview, TXNTSB SEA75DYG05Accident · No injuriesClosedPiper PA-25 · Quincy, WANTSB SEA75DYG03Accident · Minor injuriesClosedBell 47G-2 · Wapato, WANTSB IAD75FID01Accident · No injuriesClosedCallair A-9B · Temperancevl, VANTSB OAK75FXQ05Accident · Minor injuriesClosedPiper PA-25 · Wellington, NVNTSB OAK75DVA05Accident · No injuriesClosedBoeing A75N1 · Hickman, CANTSB MKC75FCQ05Accident · Serious injuriesClosedBede BD-5J · Newton, KSNTSB MKC74FCQ08Accident · Serious injuriesClosedCessna 188 · Leoti, KSNTSB LAX75FVA00Accident · 1 fatalClosedBoeing B75N1 · Bakersfield, CANTSB LAX75FUQ05Accident · No injuriesClosedBell 47G-5 · Oceanside, CANTSB MKC75DCJ09Accident · No injuriesClosedCallair A-9B · Wood River, NENTSB MIA75FLG03Accident · Serious injuriesClosedCessna A188B · Dillon, SCNTSB MIA75DKT06Accident · Minor injuriesClosedBell 47 · Loxahatchee, FLNTSB DEN75AD001Accident · 1 fatalClosedPiper PA-24 · Steamboat Sp, CONTSB MIA75DKT04Accident · Serious injuriesClosedCessna 150J · Riviera Beach, FLNTSB FTW75FQG04Accident · Minor injuriesClosedPiper PA-25 · Panhandle, TXNTSB NYC75AN005Accident · 1 fatalClosedGlobe GC-1B · Plum Island, MANTSB DEN75DTE05Accident · No injuriesClosedBellanca CH300 · Eads, CONTSB SEA75AS003Accident · 1 fatalClosedCessna 180C · Tacoma, WANTSB MKC75FTG02Accident · No injuriesClosedPiper PA-18 · Nw Rockford, NDNTSB MKC75FCD03Accident · 1 fatalClosedCessna 172H · Fort Madison, IANTSB CHI74AC007Accident · 2 fatalClosedPiper PA-28 · Montville, OHNTSB MKC75FCJ07Accident · No injuriesClosedPiper PA-25 · Holdrege, NENTSB IAD75FLT01Accident · No injuriesClosedPiper PA-25 · Selmer, TNNTSB FTW75DQG03Accident · No injuriesClosedPiper PA-25 · Olton, TXNTSB DEN75FTE02Accident · Serious injuriesClosedGrumman G-164 · Fort Lupton, CONTSB OAK75DVA03Accident · No injuriesClosedCessna 188B · Merced, CANTSB MKC75DCQ03Accident · No injuriesClosedPiper PA-25 · Stafford, KSNTSB MIA75FLA04Accident · Serious injuriesClosedEL Tomcat MK-5A · Graceville, FLNTSB FTW75DQG02Accident · Minor injuriesClosedPiper PA-25 · Lazbuddie, TXNTSB NYC75DFJ02Accident · No injuriesClosedPiper PA-25 · Dansville, NYNTSB FTW75DRJ01Accident · Serious injuriesClosedPiper PA-25 · Winnsboro, LANTSB FTW75DQG01Accident · No injuriesClosedPiper PA-25 · Fieldton, TXNTSB MIA75DLJ02Accident · Minor injuriesClosedPiper PA-18A · Athens, AL