NTSB finding section · Personnel issues › Physical

Cases
45
In the probable cause
31 (69%)
Fatal cases
26
NTSB code
020115

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 Sensory ability/limitation per year: 45 cases
20081
20092
20104
20111
20125
20133
20141
20155
20174
20193
20205
20214
20222
20232
20242
20261
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\", '020115') 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.

Subsections · 5

Query with SQL
duckdb -csv -c "SELECT left(f.\"findingCode\", 8) AS code, max(f.\"tier4Name\") AS name,
    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
  WHERE starts_with(f.\"findingCode\", '020115') AND f.\"findingCode\" GLOB '[0-9][0-9]*'
  GROUP BY 1
  ORDER BY cases DESC, code"

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\", '020115'))
  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\", '020115') 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 · 45

NTSB CEN26LA145Accident · No injuriesClass 4 · LimitedFinal reportClassic Waco YMF · Galveston, TXThe biplane pilot’s failure to maintain an adequate visual lookout while taxiing, which included the failure to perform S-turns to compensate for limited forward visibility.Mar 24, 2026 · N43000 · 2 aircraft · Substantial damageNTSB WPR24LA286Accident · No injuriesClass 4 · LimitedFinal reportCessna 182P · Stanley, IDThe pilot’s loss of directional control in reduced visibility conditions due to a wind gust, which resulted in a collision with a trailer.Aug 23, 2024 · N9989E · Substantial damageNTSB WPR24LA068Accident · No injuriesClass 3 · LimitedFinal reportCessna 421C · Carson City, NVAirport personnel’s failure to properly prioritize their response actions, including updating the airport’s automated weather observation system recording in a timely manner to notify incoming pilots of a runway closure, which resulted in an airplane striking…Jan 8, 2024 · N421TP · Substantial damageNTSB WPR24LA069Accident · No injuriesClass 4 · LimitedFinal reportTaylorcraft BC12-D · Whitefish, MTThe failure of the airport authorities to renew the airport closure NOTAM for the airport. Contributing to the accident, was the pilot’s inability to see the runway closure sign.Dec 23, 2023 · N43415 · Substantial damageNTSB CEN23FA333Accident · 2 fatalClass 3 · FieldFinal reportRotorway 162F · Oshkosh, WIThe failure of the gyroplane pilot to see and avoid the helicopter while maneuvering in the traffic pattern. Contributing to the accident was the gyroplane pilot’s performance of a prohibited maneuver in the traffic pattern.Jul 29, 2023 · N193AZ · 2 aircraft · DestroyedNTSB CEN23MA034Accident · 6 fatalClass 1 · MajorFinal reportBoeing B17 · Dallas, TXthe air boss’s and air show event organizer’s lack of an adequate, prebriefed aircraft separation plan for the air show performance, relying instead on the air boss’s real-time deconfliction directives and the see-and-avoid strategy for collision avoidance,…Nov 12, 2022 · N7227C · 2 aircraft · DestroyedNTSB ANC22LA070Accident · No injuriesClass 4 · LimitedFinal reportPiper PA-18-150 · Fairbanks, AKThe pilot’s failure to maintain centerline in dusk light conditions which resulted in impact with trees.Sep 3, 2022 · N119CC · Substantial damageNTSB WPR22LA069Accident · Serious injuriesClass 4 · LimitedFinal reportCessna 172N · Auburn, CAThe pilot’s failure to maintain altitude during an instrument approach, which resulted in an impact with power lines.Dec 22, 2021 · N6280F · Substantial damageNTSB CEN22LA074Accident · No injuriesClass 4 · LimitedFinal reportMini-MAX 1600R Sport · South Bend, INThe pilot’s low-level flight and poor visual lookout which resulted in collision with a light pole on final approach and the pilot’s improper decision to operate an airplane under the influence of alcohol.Dec 13, 2021 · UNREG · Substantial damageNTSB WPR21LA269Accident · No injuriesClass 4 · LimitedFinal reportCessna 172R · Petaluma, CAThe pilot’s improper landing flare which resulted in a hard landing following a partial loss of electrical power. Contributing to the accident was the pilot’s distraction and hampered visual function.Jul 10, 2021 · N996RA · Substantial damage
See all 45 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\", '020115'))
  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.