Record-keeping

NTSB finding section · Personnel issues › Task performance

Cases
23
In the probable cause
8 (35%)
Fatal cases
6
NTSB code
020625

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 Record-keeping per year: 23 cases
20092
20123
20131
20144
20161
20171
20191
20211
20225
20231
20243
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\", '020625') 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 · 3

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\", '020625') 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\", '020625'))
  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\", '020625') 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 · 23

NTSB ERA25LA023Accident · 2 fatalClass 3 · LimitedFinal reportBuckeye Dream Machine · Nicholasville, KYThe pilot’s loss of control in flight, which resulted in a collision with terrain.Oct 27, 2024 · N75331 · Substantial damageNTSB CEN24LA358Accident · No injuriesClass 3 · LimitedFinal reportHughes 369 · Canton, MIFatigue cracking of the main rotor blade that occurred at an undetermined time.Sep 11, 2024 · N8969F · Substantial damageNTSB CEN24LA128Accident · No injuriesClass 3 · LimitedFinal reportEurocopter Deutschland MBB-BK 117 C-2 · West Lafayette, INThe failure of maintenance personnel to properly install the tail rotor pitch change slider attachment hardware (T-bolt), which led to the disconnection of the pitch change slider, a loss of tail rotor control, and subsequent hard landing. Contributing to the…Mar 7, 2024 · N191LL · Substantial damageNTSB CEN23LA165Accident · No injuriesClass 3 · LimitedFinal reportPipistrel Lsa Sinus · Kingsford, MIThe failure of maintenance personnel to properly secure the left carburetor bowl cover, which resulted in an engine fire before takeoff.Apr 13, 2023 · N413EK · Substantial damageNTSB CEN22LA344Accident · Serious injuriesClass 3 · LimitedFinal reportPiper PA-32RT-300T · Dallas, TXMaintenance personnel’s inadequate maintenance of the magneto, which resulted in a loss of engine ignition, a loss of engine power, and a subsequent forced landing.Jul 28, 2022 · N3027J · Substantial damageNTSB CEN22LA322Accident · No injuriesClass 3 · LimitedFinal reportAero Commander 112 · Granbury, TXThe loss of engine power due to metal contamination within the cylinder following poor maintenance.Jul 18, 2022 · N1181J · Substantial damageNTSB CEN22FA298Accident · 1 fatalClass 3 · FieldFinal reportPiper PA-24-250 · St. Jacob, ILThe inadequate maintenance of the airplane fuel system that resulted in fuel exhaustion and a loss of engine power.Jul 2, 2022 · N5235P · DestroyedNTSB CEN22LA233Accident · No injuriesClass 3 · LimitedFinal reportBeech A36 · Amarillo, TXThe loss of engine power due to a leak in the fuel control assembly. Contributing to the accident was the inadequate maintenance of the fuel control assembly.Jun 4, 2022 · N9087S · Substantial damageNTSB WPR22FA094Accident · Minor injuriesClass 3 · FieldFinal reportDassault Mirage F1 CR · Glendale, AZA loss of engine power due to fuel exhaustion as result of the failure of maintenance personnel to ensure the airplane was serviced with the correct amount of fuel, the failure of maintenance personnel and the pilot to adequately check the airplane’s…Feb 10, 2022 · N633AX · DestroyedNTSB ANC21FA065Accident · 2 fatalClass 3 · FieldFinal reportCessna 172P · Eagle River, AKAn inflight collision with terrain under unknown circumstances. Contributing to the delayed rescue response was the failure of the emergency locator transmitter (ELT) to activate as designed, and the mechanic’s failure to ensure the correct ELT was installed…Jul 26, 2021 · N65698 · Substantial damage
See all 23 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\", '020625'))
  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.