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 FTW80DPD22Accident · No injuriesClosedPiper PA-28 · Denton, TXNTSB FTW80FRJ13Accident · Serious injuriesClosedAir Tractor AT-301 · Monroe, LANTSB SEA80FA023Accident · 1 fatalClosedCessna 150L · Rosalia, WANTSB LAX80FA069Accident · 1 fatalClosedPiper PA-18 · Litchfield, CANTSB NYC80FA029Accident · 1 fatalClosedBell 47G-5A · Fayetteville, PANTSB IAD80FA034Accident · 2 fatalClosedCessna 152 · Apison, TNNTSB FTW80FQG11Accident · Minor injuriesClosedCessna A188B · Tulia, TXNTSB MIA80FKJ27Accident · 1 fatalClosedBensen BTS8-M · Selma, ALNTSB MIA80DKA06Accident · Serious injuriesClosedBellanca 7ECA · St.Thomas, VINTSB FTW80FPJ12Accident · Minor injuriesClosedBoeing E75 · Chickasha, OKNTSB FTW80DQG12Accident · No injuriesClosedPitts S-1S · Midland, TXNTSB SEA80DYE22Accident · Minor injuriesClosedAerospatle SA315B · Joyce, WANTSB NYC80FNE11Accident · No injuriesClosedRobinson R-22 · Rocky Hill, CTNTSB NYC80FGM14Accident · No injuriesClosedCessna 150G · Marianna, PANTSB MIA80FLT02Accident · Minor injuriesClosedAero Comdr S2R · Eudora, MSNTSB SEA80DYM21Accident · Minor injuriesClosedWeatherly 201C · Hood River, ORNTSB LAX80DVD14Accident · Minor injuriesClosedBell 47G · Stockton, CANTSB LAX80FVM17Accident · No injuriesClosedBell 47D1 · Salinas, CANTSB FTW80FA054Accident · 1 fatalClosedMooney M-18C · Saginaw, TXNTSB FTW80DPD18Accident · No injuriesClosedCessna A188B · Olney, TXNTSB LAX80FVD12Accident · 1 fatalClosedPitts S-1S · Tracy, CANTSB LAX80FA063Accident · Serious injuriesClosedBell 47G2 · Brentwood, CANTSB LAX80DVA22Accident · No injuriesClosedHiller UH-12E · Merced, CANTSB LAX80DUJ43Accident · No injuriesClosedBell 47G5 · Somerton, AZNTSB LAX80DVM16Accident · No injuriesClosedBell 47G3B1 · Templeton, CANTSB FTW80FRG29Accident · No injuriesClosedPiper PA-38 · Edinburg, TXNTSB LAX80DVA18Accident · No injuriesClosedPiper PA-36 · Los Banos, CANTSB IAD80FKM10Accident · 1 fatalClosedStits Playby · China Grove, NCNTSB DEN80FTE30Accident · Minor injuriesClosedBeech 23 · Fountain, CONTSB IAD80FKW09Accident · 1 fatalClosedDer Jagger Wilson · Loudon, TNNTSB MIA80FKA05Accident · No injuriesClosedCessna 150 · Rio Grande, PRNTSB LAX80DJA12Accident · No injuriesClosedHiller Acft UH-12E · Waimea Kauai, HINTSB FTW80DRJ12Accident · Minor injuriesClosedGrumman G-164B · Monroe, LANTSB FTW80DRA19Accident · Minor injuriesClosedGrumman G-164A · Nome, TXNTSB LAX80FA056Accident · 2 fatalClosedPiper PA-22 · Oxnard, CANTSB IAD80FA025Accident · 2 fatalClosedCessna 152 · Vale, NCNTSB LAX80DUJ32Accident · No injuriesClosedAir Tractor AT-300 · Tacna, AZNTSB LAX80DJA10Accident · Minor injuriesClosedHiller 12E · Kealia Kauai, HINTSB MIA80FA034Accident · 1 fatalClosedGrum-Amer AA-5 · Miami, FLNTSB MIA80DKJ19Accident · Minor injuriesClosedAero Comdr 600S2R · Bruce, FLNTSB FTW80DPD09Accident · No injuriesClosedHughes 269A · Ringo, TXNTSB FTW80DPG12Accident · No injuriesClosedCessna 150 · Texarkana, ARNTSB MKC80FCJ06Accident · Serious injuriesClosedPiper J3C · Milburn, NENTSB NYC80FFJ05Accident · 1 fatalClosedPitts S-1S · Angola, NYNTSB LAX80FA041Accident · 1 fatalClosedPiper PA-32 · Catalina Is, CANTSB MKC80DER21Accident · Minor injuriesClosedPiper PA-28 · Battle Lake, MNNTSB SEA80FYM12Accident · No injuriesClosedHiller Acft UH-12E · Willamina, ORNTSB LAX80FVD09Accident · Minor injuriesClosedSikorsy S-58C · Pt Bonita, CANTSB FTW80DPG11Accident · No injuriesClosedBoeing A75 · Hope, ARNTSB LAX80FUJ22Accident · 1 fatalClosedMidget Mustng · Parker, AZ