Defining event in
13 cases
In the sequence of
15 cases
Fatal cases
12
NTSB code
990

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 it was the defining event; in gray, cases where it came elsewhere in the sequence. The map shows the cases where it was the defining event. Events are coded with the final report, so the latest years are incomplete.

Cases per year

2008Defining eventElsewhere in the sequence2026
Cases with Missing aircraft per year: 15 cases
20092
20101
20123
20131
20151
20202
20222
20231
20252
Query with SQL
duckdb -csv -c "SELECT year(c.\"eventDate\") AS year, count(DISTINCT e.case_mkey) AS cases,
    count(DISTINCT e.case_mkey) FILTER (WHERE e.\"isDefiningEvent\") AS defining
  FROM 'https://openairdocs.org/data/latest/ntsb_events.parquet' e JOIN 'https://openairdocs.org/data/latest/ntsb_case_detail.parquet' c ON c.\"mKey\" = e.case_mkey
  WHERE e.\"tier2Number\" = '990' AND e.case_mkey IN (SELECT case_mkey FROM 'https://openairdocs.org/data/latest/ntsb_events.parquet' WHERE \"isDefiningEvent\")
  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 these cases

Query with SQL
duckdb -csv -c "WITH defining AS (SELECT * FROM 'https://openairdocs.org/data/latest/ntsb_events.parquet' WHERE \"tier2Number\" = '990' AND \"isDefiningEvent\")
  SELECT * FROM (
  SELECT 'Phase of flight' AS kind, e.\"tier1Number\" AS code, max(e.\"eventTier1Name\") AS name, count(DISTINCT e.case_mkey) AS cases
  FROM defining e
  GROUP BY ALL
  UNION ALL
  SELECT 'Finding in the probable cause', left(f.\"findingCode\", 8), max(f.\"tier4Name\"), count(DISTINCT f.case_mkey)
  FROM defining e JOIN 'https://openairdocs.org/data/latest/ntsb_findings.parquet' f ON f.case_mkey = e.case_mkey AND f.aircrafts_position = e.aircrafts_position AND f.\"inProbableCause\"
  WHERE f.\"findingCode\" GLOB '[0-9][0-9]*'
  GROUP BY ALL
  UNION ALL
  SELECT 'Aircraft model', a.aircraft_model_code, any_value(concat_ws(' ', m.manufacturer, m.model)), count(DISTINCT e.case_mkey)
  FROM defining e JOIN 'https://openairdocs.org/data/latest/ntsb_aircrafts.parquet' a ON a.case_mkey = e.case_mkey AND a.position = e.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
  )
  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 · 13

NTSB CEN25LA164Accident · 1 fatalClass 4 · LimitedFinal reportAir Tractor AT802 · Atlantic Ocean, CanadaThe airplane’s impact with the ocean for undetermined reasons based on the available evidence.Apr 29, 2025 · N4025K · DestroyedNTSB GAA23WA118Accident · 4 fatalClass 5 · ForeignSud Aviation/Eurocopter Alouette II SE313B · Mangsee Island, PhilippinesMar 1, 2023 · N45VXNTSB WPR22LA371Accident · 1 fatalClass 3 · LimitedFinal reportCessna 172M · Pacific Ocean, CAUndetermined because the airplane and pilot were not located.Aug 20, 2022 · N9670VNTSB GAA22WA142AccidentClass 5 · ForeignPiper PA-28R · Le Touquet, United KingdomApr 2, 2022 · G-EGVA · Substantial damageNTSB CEN21WA042Accident · 2 fatalClass 5 · ForeignPiper PA34 · Reus, SpainNov 3, 2020 · EC-HCA · Substantial damageNTSB WPR20FAMS2Accident · 1 fatalClass 3 · Missing aircraftFinal reportLuscombe 8 · Pacific Ocean, ORUndetermined because the airplane and pilot were not located.Feb 12, 2020 · N77875 · DestroyedNTSB WPR15FAMS1Accident · 1 fatalMissing aircraftFinal reportCessna 172S · Davenport, CAUndetermined because the airplane was not located.May 8, 2015 · N191TGNTSB ANC13FAMS2Accident · 1 fatalMissing aircraftFinal reportPiper PA-32-260 · Yakutat, AKUndetermined because the pilot and airplane were not found.Sep 9, 2013 · N3705W · DestroyedNTSB ANC13FAMS1Accident · 1 fatalMissing aircraftFinal reportPiper PA-18-150 · Kenai, AKUndetermined. The airplane and pilot were not found.Oct 13, 2012 · N444LZ · DestroyedNTSB ERA12FAMS1Accident · 1 fatalMissing aircraftFinal reportCessna 182P · Atlantic Ocean (Atlantic Ocean)Undetermined; the airplane and pilot are missing.Mar 1, 2012 · N1338S · Substantial damage
See all 13 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 e.case_mkey FROM 'https://openairdocs.org/data/latest/ntsb_events.parquet' e WHERE e.\"isDefiningEvent\" AND e.\"tier2Number\" = '990')
  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.