NTSB finding · Aircraft › Aircraft oper/perf/capability › Performance/control parameters

Cases
391
In the probable cause
364 (93%)
Fatal cases
114
NTSB code
01062023

NTSB has coded findings and defining events since 2008. Earlier cases used its older occurrence and cause codes, so they aren’t counted here.

When and where

In green, cases where NTSB made it part of the probable cause; in gray, a factor or other finding. Findings are coded with the final report, often a year or more after the event, so the latest years are incomplete.

Cases per year

2008In the probable causeFactor only2026
Cases with Lateral/bank control per year: 391 cases
20088
20098
201016
201114
201221
201311
201428
201517
201627
201736
201823
201938
202024
202126
202229
202322
202421
202515
20267
Query with SQL
duckdb -csv -c "SELECT year(c.\"eventDate\") AS year, count(DISTINCT f.case_mkey) AS cases,
    count(DISTINCT f.case_mkey) FILTER (WHERE f.\"inProbableCause\") AS in_probable_cause
  FROM 'https://openairdocs.org/data/latest/ntsb_findings.parquet' f JOIN 'https://openairdocs.org/data/latest/ntsb_case_detail.parquet' c ON c.\"mKey\" = f.case_mkey
  WHERE starts_with(f.\"findingCode\", '01062023') AND c.\"eventDate\" >= DATE '2000-01-01'
  GROUP BY 1
  ORDER BY 1"

Prints the counts as CSV. It reads the release’s Parquet files over HTTPS, so there’s nothing to download first. Install DuckDB to run it.

In the same cases

Query with SQL
duckdb -csv -c "WITH matched AS (SELECT DISTINCT case_mkey, aircrafts_position FROM 'https://openairdocs.org/data/latest/ntsb_findings.parquet' WHERE starts_with(\"findingCode\", '01062023'))
  SELECT * FROM (
  SELECT 'Defining event' AS kind, e.\"tier2Number\" AS code, max(e.\"eventTier2Name\") AS name, count(DISTINCT f.case_mkey) AS cases
  FROM matched f JOIN 'https://openairdocs.org/data/latest/ntsb_events.parquet' e ON e.case_mkey = f.case_mkey AND e.aircrafts_position = f.aircrafts_position AND e.\"isDefiningEvent\"
  WHERE e.\"tier2Number\" <> ''
  GROUP BY ALL
  UNION ALL
  SELECT 'Aircraft model', a.aircraft_model_code, any_value(concat_ws(' ', m.manufacturer, m.model)), count(DISTINCT f.case_mkey)
  FROM matched f JOIN 'https://openairdocs.org/data/latest/ntsb_aircrafts.parquet' a ON a.case_mkey = f.case_mkey AND a.position = f.aircrafts_position
  LEFT JOIN 'https://openairdocs.org/data/latest/faa_aircraft_model.parquet' m ON m.code = a.aircraft_model_code
  WHERE a.aircraft_model_code IS NOT NULL
  GROUP BY ALL
  UNION ALL
  SELECT 'Other finding', left(g.\"findingCode\", 8), max(g.\"tier4Name\"), count(DISTINCT g.case_mkey)
  FROM 'https://openairdocs.org/data/latest/ntsb_findings.parquet' g
  WHERE g.case_mkey IN (SELECT case_mkey FROM matched) AND NOT starts_with(g.\"findingCode\", '01062023') AND g.\"findingCode\" GLOB '[0-9][0-9]*'
  GROUP BY ALL
  )
  QUALIFY row_number() OVER (PARTITION BY kind ORDER BY cases DESC) <= 10
  ORDER BY kind, cases DESC"

Prints the counts as CSV. It reads the release’s Parquet files over HTTPS, so there’s nothing to download first. Install DuckDB to run it.

Newest cases · 391

NTSB ERA26LA313Accident · Minor injuriesClass 4 · LimitedFinal reportRobinson Helicopter R22 Beta · Milton, FLThe flight instructor’s failure to maintain control of the helicopter during a low hover over a grass area, which resulted in left skid contact with the ground and a dynamic rollover to the left.Aug 24, 2026 · N979SH · Substantial damageNTSB ERA26LA304Accident · No injuriesClass 4 · LimitedFinal reportRobinson Helicopter R22 Beta · Miramar, FLThe flight instructor’s failure to maintain control of the helicopter during a hover, which resulted in the left skid contacting ground and a subsequent dynamic rollover.Aug 15, 2026 · N8316N · Substantial damageNTSB WPR26LA247Accident · Serious injuriesClass 4 · LimitedFinal reportBell 47G · Springtown, TXThe pilot’s failure to maintain clearance from trees while in a low hover.Jul 3, 2026 · N7985A · Substantial damageNTSB WPR26LA192Accident · No injuriesClass 4 · LimitedFinal reportCirrus Design SR22T · Vernal, UTThe pilot's failure to maintain control during the landing flare with a gusting crosswind.May 16, 2026 · N252LM · Substantial damageNTSB WPR26LA188Accident · Minor injuriesClass 4 · LimitedFinal reportMcdonnell Douglas Helicopter 500 · Twin Falls, IDThe pilot’s failure to maintain control while hovering in gusty wind conditions, resulting in the helicopter rolling onto its side.May 14, 2026 · N952SF · Substantial damageNTSB CEN26LA134Accident · No injuriesClass 4 · LimitedFinal reportPiper PA-18-150 · Sonora, TXThe pilot’s failure to maintain adequate airspeed during takeoff, which resulted in a loss of control and hard landing.Mar 4, 2026 · N3695Z · Substantial damageNTSB DCA26LA139Incident · No injuriesClass 4 · LimitedFinal reportBombardier CL-600-2C10 · College Park, GAThe captain’s inadequate compensation for gusting crosswind wind conditions while attempting to land and a subsequent go-around.Feb 26, 2026 · N354CA · Minor damageNTSB CEN25LA404Accident · No injuriesClass 4 · LimitedFinal reportCirrus SR20 · Watertown, WIThe flight instructor’s failure to maintain control of the airplane following the student pilot’s bounced landing. Contributing to the accident was the flight instructor’s delayed remedial action which resulted in diminished airplane performance during the…Sep 30, 2025 · N814 · Substantial damageNTSB ERA25LA359Accident · No injuriesClass 4 · LimitedFinal reportEdwin Miller Calidus · Hopkinsville, KYThe pilot’s failure to maintain control of the gyroplane, which resulted in dynamic rollover and impact with terrain.Sep 20, 2025 · N4779M · Substantial damageNTSB WPR25LA306Accident · No injuriesClass 4 · LimitedFinal reportTemco GC-1B · Toledo, WAThe pilot’s failure to maintain control of the airplane during takeoff in crosswind conditions..Sep 18, 2025 · N78316 · Substantial damage
See all 391 cases
Query with SQL
duckdb -csv -c "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 f.case_mkey FROM 'https://openairdocs.org/data/latest/ntsb_findings.parquet' f WHERE starts_with(f.\"findingCode\", '01062023'))
  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.