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 MIA74DKG09Accident · No injuriesClosedAero Comdr A-9B · Bainbridge, GANTSB FTW74DRD01Accident · No injuriesClosedGrumman G-164 · Lake Arthur, LANTSB NYC74AN007Accident · 4 fatalClosedBellanca 17-30A · Pinetops, NCNTSB CHI74FEI03Accident · 1 fatalClosedCessna 188A · Millersburg, OHNTSB SEA73FYG03Accident · Serious injuriesClosedPiper PA-25 · Pasco, WANTSB MIA73FKQ02Accident · Serious injuriesClosedGrumman G-164A · Charleston, MSNTSB FTW74DRA03Accident · Minor injuriesClosedBell 47D1 · Sealey, TXNTSB CHI74FEA04Accident · Serious injuriesClosedBell 47G-3 · Dana, INNTSB OAK74FXQ07Accident · 2 fatalClosedBoeing B-17G · Eureka, NVNTSB OAK74FVA03Accident · Serious injuriesClosedBoeing E75N1 · Hickman, CANTSB NYC74FHA01Accident · No injuriesClosedCessna 150L · Benton, PANTSB MIA74AM003Accident · 1 fatalClosedCessna 150L · Wicksburg, ALNTSB OAK74DVG05Accident · Minor injuriesClosedGrumman G-164 · Woodland, CANTSB MKC74DCJ01Accident · No injuriesClosedPiper PA-25 · Lynch, NENTSB NYC74FNC03Accident · No injuriesClosedBoeing A75 · South Hope, MENTSB OAK74DVA05Accident · No injuriesClosedPiper PA-25 · Merced, CANTSB DEN74FQA03Accident · No injuriesClosedBell 47G5 · Albuquerque, NMNTSB SEA74AYE04Accident · No injuriesClosedBell 47D · Anacortes, WANTSB IAD74DLQ05Accident · Minor injuriesClosedCessna 150 · Campbellsville, KYNTSB OAK74FVA04Accident · 1 fatalClosedBoeing A75 · Hickman, CANTSB NYC74FNC01Accident · 1 fatalClosedSnow 600S2C · Presque Isle, MENTSB DEN74FTE04Accident · No injuriesClosedHughes 269A1 · Ft.Collins, CONTSB SEA74FTI01Accident · Serious injuriesClosedPiper PA-25 · Glen, MTNTSB OAK74FVM01Accident · Minor injuriesClosedBell 47G-2 · Salinas, CANTSB MIA74DKQ01Accident · Serious injuriesClosedBoeing B75NI · Rolling Fork, MSNTSB CHI74FEA03Accident · No injuriesClosedBell 47G-2A · Little York, INNTSB CHI74AC003Accident · 4 fatalClosedCessna 172F · No.Webster, INNTSB MKC74FCG08Accident · Serious injuriesClosedPiper PA-25 · Clifton Hill, MONTSB IAD74FLJ01Accident · Minor injuriesClosedPiper PA-18A · Fayetteville, NCNTSB SEA74FYC01Accident · Serious injuriesClosedStory MK-7 · Monmouth, ORNTSB IAD73AI020Accident · 1 fatalClosedChampion 7GCBC · Selbyville, DENTSB FTW73FRG94Accident · No injuriesClosedGrumman G-164 · Rangerville, TXNTSB FTW73FPA33Accident · Serious injuriesClosedThorp T-18 · Whitesboro, TXNTSB OAK73DXQ36Accident · Minor injuriesClosedBell 47G3B1 · Belden, CANTSB FTW73FRG91Accident · Minor injuriesClosedBell 47G-4A · Petronila, TXNTSB CHI74FEC41Accident · No injuriesClosedAero Comdr 600S2R · Ottowa Lake, MINTSB OAK73FVM40Accident · Minor injuriesClosedHiller Acft UH-12C · Salinas, CANTSB MKC73DTG23Accident · No injuriesClosedPiper PA-18 · Sawyer, NDNTSB IAD73FLT22Accident · No injuriesClosedPiper PA-25 · Silerton, TNNTSB FTW73FPM19Accident · Minor injuriesClosedBoeing B75N1 · Stuart, OKNTSB SEA74FYG02Accident · Minor injuriesClosedPiper PA-25 · Pasco, WANTSB SEA73FTI23Accident · Serious injuriesClosedPiper PA-25 · Belgrade, MTNTSB MKC73DCQ38Accident · No injuriesClosedCessna 188 · North Fowler, KSNTSB FTW73DRA40Accident · No injuriesClosedPiper PA-18A · Ganado, TXNTSB FTW73DRG92Accident · Minor injuriesClosedGrumman G-164 · Monte Alto, TXNTSB FTW73DPD46Accident · No injuriesClosedPiper PA-25 · Crowell, TXNTSB MKC73AK076Accident · 2 fatalClosedBeech D17S · Kimball, NENTSB FTW73DRD37Accident · Minor injuriesClosedGrumman G-164 · Breaux Bridge, LANTSB MIA73FKG86Accident · 2 fatalClosedPiel-Emraud 301 · Palmetto, GANTSB MIA73FKG85Accident · Serious injuriesClosedCallair A-9 · Mcrae, GA