Inflight upset

NTSB defining event · CICTT: Abrupt Maneuver

Defining event in
46 cases
In the sequence of
74 cases
Fatal cases
20
NTSB code
271

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 Inflight upset per year: 74 cases
20081
20092
20107
20115
20129
20133
20143
20154
20164
20175
20187
20196
20203
20211
20227
20233
20242
20251
20261
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\" = '271' 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\" = '271' 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 · 46

NTSB DCA26WA267Accident · No injuriesClass 3 · ForeignBoeing 737 · Arabian Sea, PakistanJul 7, 2026 · AP-BOINTSB WPR25LA089Accident · Serious injuriesClass 4 · LimitedFinal reportLockheed C-130A · Daggett, CAAn inflight upset due to an improperly secured load that resulted in serious injuries.Feb 1, 2025 · N466TM · No damageNTSB DCA25WA019IncidentClass 5 · ForeignAirbus A330 · International Waters, South AfricaOct 27, 2024 · ZS-SXJ · No damageNTSB DCA24WA186Accident · Serious injuriesClass 4 · ForeignBoeing 787 · Tbd, TürkiyeMay 26, 2024 · A7-BHM · No damageNTSB DCA24WA036OccurrenceClass 5 · ForeignBoeing 737 Max 8-200 · London, United KingdomDec 4, 2023 · EI-HET · No damageNTSB DCA23WA455IncidentClass 5 · ForeignBoeing 737 · Ballina, AustraliaSep 6, 2023 · VH-YQR · No damageNTSB ANC23FA008Accident · 3 fatalClass 3 · FieldFinal reportRaytheon C90A · Kaupo, HIGuardian Flight’s inadequate pilot training and performance tracking, which failed to identify and correct the pilot’s consistent lack of skill, and which resulted in the pilot’s inability to maintain his position inflight using secondary instruments to…Dec 15, 2022 · N13GZ · Substantial damageNTSB ERA23FA078Accident · 1 fatalClass 3 · FieldFinal reportRotorsport UK Cavalon · Beverly, MAThe pilot’s improper yaw control during the takeoff initial climb, which resulted in an excessive sideslip and a subsequent loss of aircraft control.Dec 4, 2022 · N401GR · Substantial damageNTSB WPR22LA284Accident · Serious injuriesClass 3 · LimitedFinal reportBombardier BD-100-1A10 · San Francisco, CAAn inflight upset resulting in serious injury to the cabin attendant following an autopilot disconnect for reasons that could not be determined based on the available information.Jul 27, 2022 · N557XJ · No damageNTSB GAA22WA274AccidentClass 5 · ForeignBeech 90 · Le Bourget, FranceMay 23, 2022 · F-HHAM · No damage
See all 46 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\" = '271')
  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.