NTSB investigations, 1981
374 cases where the phase of flight was Maneuvering.
Cases per year
| 1964 | 415 |
|---|---|
| 1965 | 419 |
| 1966 | 366 |
| 1967 | 410 |
| 1968 | 394 |
| 1969 | 360 |
| 1970 | 330 |
| 1971 | 384 |
| 1972 | 359 |
| 1973 | 407 |
| 1974 | 410 |
| 1975 | 407 |
| 1976 | 480 |
| 1977 | 443 |
| 1978 | 433 |
| 1979 | 384 |
| 1980 | 377 |
| 1981 | 374 |
| 1982 | 416 |
| 1983 | 476 |
| 1984 | 462 |
| 1985 | 402 |
| 1986 | 357 |
| 1987 | 357 |
| 1988 | 349 |
| 1989 | 313 |
| 1990 | 307 |
| 1991 | 350 |
| 1992 | 309 |
| 1993 | 315 |
| 1994 | 322 |
| 1995 | 320 |
| 1996 | 279 |
| 1997 | 262 |
| 1998 | 259 |
| 1999 | 267 |
| 2000 | 281 |
| 2001 | 257 |
| 2002 | 241 |
| 2003 | 263 |
| 2004 | 224 |
| 2005 | 212 |
| 2006 | 203 |
| 2007 | 222 |
| 2008 | 235 |
| 2009 | 208 |
| 2010 | 222 |
| 2011 | 250 |
| 2012 | 236 |
| 2013 | 216 |
| 2014 | 199 |
| 2015 | 217 |
| 2016 | 177 |
| 2017 | 201 |
| 2018 | 187 |
| 2019 | 197 |
| 2020 | 165 |
| 2021 | 186 |
| 2022 | 186 |
| 2023 | 191 |
| 2024 | 166 |
| 2025 | 145 |
| 2026 | 90 |
Where
Latest cases
Query with SQL
duckdb -csv -c "WITH phase_names(main, name) AS (VALUES (100, 'Prior to flight'), (150, 'Standing'), (200, 'Pushback/towing'), (250, 'Taxi'), (300, 'Takeoff'), (350, 'Initial climb'), (400, 'Enroute'), (450, 'Maneuvering'), (500, 'Approach'), (550, 'Landing'), (600, 'Emergency descent'), (650, 'Uncontrolled descent'), (700, 'Post-impact'), (750, 'After landing'), (800, 'Other'), (990, 'Unknown')),
crosswalk(code, main, name) AS (VALUES (500, 150, 'Standing'), (501, 150, 'Standing - pre-flight'), (502, 150, 'Standing - starting engine(s)'), (503, 150, 'Standing - engine(s) operating'), (504, 150, 'Standing - engine(s) not operating'), (505, 150, 'Standing - idling rotors'), (510, 250, 'Taxi'), (511, 200, 'Taxi - pushback/tow'), (512, 250, 'Taxi - to takeoff'), (513, 250, 'Taxi - from landing'), (514, 250, 'Taxi - aerial'), (520, 300, 'Takeoff'), (521, 300, 'Takeoff - roll/run'), (522, 350, 'Takeoff - initial climb'), (523, 300, 'Takeoff - aborted'), (530, 400, 'Climb'), (531, 400, 'Climb - to cruise'), (540, 400, 'Cruise'), (541, 400, 'Cruise - normal'), (542, 400, 'Maneuvering - holding (IFR)'), (550, 400, 'Descent'), (551, 400, 'Descent - normal'), (552, 600, 'Descent - emergency'), (553, 650, 'Descent - uncontrolled'), (560, 500, 'Approach'), (561, 500, 'Approach - VFR pattern - downwind'), (562, 500, 'Approach - VFR pattern - base turn'), (563, 500, 'Approach - VFR pattern - base leg/base to final'), (564, 500, 'Approach - VFR pattern - final approach'), (565, 500, 'Go-around (VFR)'), (566, 500, 'Approach - IAF to FAF/outer marker (IFR)'), (567, 500, 'Approach - FAF/outer marker to threshold (IFR)'), (568, 500, 'Circling (IFR)'), (569, 500, 'Missed approach (IFR)'), (570, 550, 'Landing'), (571, 550, 'Landing - flare/touchdown'), (572, 550, 'Landing - roll'), (573, 550, 'Landing - aborted'), (574, 550, 'Emergency landing'), (575, 550, 'Emergency landing after takeoff'), (576, 600, 'Emergency descent/landing'), (580, 450, 'Maneuvering'), (581, 450, 'Maneuvering - aerial application'), (582, 450, 'Maneuvering - turn to reverse direction'), (583, 450, 'Maneuvering - turn to landing area (emergency)'), (590, 450, 'Hover'), (591, 450, 'Hover - in ground effect'), (592, 450, 'Hover - out of ground effect'), (600, 800, 'Other'), (610, 990, 'Unknown')),
current_codes AS (
SELECT e.case_mkey, TRY_CAST(e.\"tier1Number\" AS INTEGER) AS code,
row_number() OVER (PARTITION BY e.case_mkey ORDER BY coalesce(e.\"isDefiningEvent\", false) DESC, e.position) AS n
FROM 'https://openairdocs.org/data/latest/ntsb_events.parquet' e
WHERE e.aircrafts_position = 1 AND e.\"tier1Number\" GLOB '[1-9][0-9]*'
AND (e.\"isDefiningEvent\" OR e.case_mkey IN (SELECT \"mKey\" FROM 'https://openairdocs.org/data/latest/ntsb_case_detail.parquet' WHERE \"isPre1982\"))
),
phases AS (
SELECT case_mkey, 'current' AS scheme, code, CASE WHEN code >= 990 THEN 990 ELSE code // 50 * 50 END AS main
FROM current_codes WHERE n = 1
UNION ALL
SELECT o.case_mkey, 'older', o.\"phaseOfFlightCode\", w.main
FROM 'https://openairdocs.org/data/latest/ntsb_occurrences.parquet' o JOIN crosswalk w ON w.code = o.\"phaseOfFlightCode\"
WHERE o.aircrafts_position = 1 AND o.\"occurrenceNumber\" = 1 AND o.case_mkey NOT IN (SELECT case_mkey FROM current_codes)
),
case_phases AS (
SELECT p.*, c.\"eventDate\", c.\"highestInjuryLevel\" = 'Fatal' AS fatal, a.aircraft_model_code
FROM phases p JOIN 'https://openairdocs.org/data/latest/ntsb_case_detail.parquet' c ON c.\"mKey\" = p.case_mkey
LEFT JOIN 'https://openairdocs.org/data/latest/ntsb_aircrafts.parquet' a ON a.case_mkey = p.case_mkey AND a.position = 1
WHERE c.\"eventDate\" >= DATE '1962-01-01' AND p.main IN (SELECT main FROM phase_names)
)
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 year(c.\"eventDate\") = 1981
AND c.\"mKey\" IN (SELECT case_mkey FROM case_phases WHERE main = 450)
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.
WITH phase_names(main, name) AS (VALUES (100, 'Prior to flight'), (150, 'Standing'), (200, 'Pushback/towing'), (250, 'Taxi'), (300, 'Takeoff'), (350, 'Initial climb'), (400, 'Enroute'), (450, 'Maneuvering'), (500, 'Approach'), (550, 'Landing'), (600, 'Emergency descent'), (650, 'Uncontrolled descent'), (700, 'Post-impact'), (750, 'After landing'), (800, 'Other'), (990, 'Unknown')),
crosswalk(code, main, name) AS (VALUES (500, 150, 'Standing'), (501, 150, 'Standing - pre-flight'), (502, 150, 'Standing - starting engine(s)'), (503, 150, 'Standing - engine(s) operating'), (504, 150, 'Standing - engine(s) not operating'), (505, 150, 'Standing - idling rotors'), (510, 250, 'Taxi'), (511, 200, 'Taxi - pushback/tow'), (512, 250, 'Taxi - to takeoff'), (513, 250, 'Taxi - from landing'), (514, 250, 'Taxi - aerial'), (520, 300, 'Takeoff'), (521, 300, 'Takeoff - roll/run'), (522, 350, 'Takeoff - initial climb'), (523, 300, 'Takeoff - aborted'), (530, 400, 'Climb'), (531, 400, 'Climb - to cruise'), (540, 400, 'Cruise'), (541, 400, 'Cruise - normal'), (542, 400, 'Maneuvering - holding (IFR)'), (550, 400, 'Descent'), (551, 400, 'Descent - normal'), (552, 600, 'Descent - emergency'), (553, 650, 'Descent - uncontrolled'), (560, 500, 'Approach'), (561, 500, 'Approach - VFR pattern - downwind'), (562, 500, 'Approach - VFR pattern - base turn'), (563, 500, 'Approach - VFR pattern - base leg/base to final'), (564, 500, 'Approach - VFR pattern - final approach'), (565, 500, 'Go-around (VFR)'), (566, 500, 'Approach - IAF to FAF/outer marker (IFR)'), (567, 500, 'Approach - FAF/outer marker to threshold (IFR)'), (568, 500, 'Circling (IFR)'), (569, 500, 'Missed approach (IFR)'), (570, 550, 'Landing'), (571, 550, 'Landing - flare/touchdown'), (572, 550, 'Landing - roll'), (573, 550, 'Landing - aborted'), (574, 550, 'Emergency landing'), (575, 550, 'Emergency landing after takeoff'), (576, 600, 'Emergency descent/landing'), (580, 450, 'Maneuvering'), (581, 450, 'Maneuvering - aerial application'), (582, 450, 'Maneuvering - turn to reverse direction'), (583, 450, 'Maneuvering - turn to landing area (emergency)'), (590, 450, 'Hover'), (591, 450, 'Hover - in ground effect'), (592, 450, 'Hover - out of ground effect'), (600, 800, 'Other'), (610, 990, 'Unknown')),
current_codes AS (
SELECT e.case_mkey, TRY_CAST(e."tier1Number" AS INTEGER) AS code,
row_number() OVER (PARTITION BY e.case_mkey ORDER BY coalesce(e."isDefiningEvent", false) DESC, e.position) AS n
FROM 'https://openairdocs.org/data/latest/ntsb_events.parquet' e
WHERE e.aircrafts_position = 1 AND e."tier1Number" GLOB '[1-9][0-9]*'
AND (e."isDefiningEvent" OR e.case_mkey IN (SELECT "mKey" FROM 'https://openairdocs.org/data/latest/ntsb_case_detail.parquet' WHERE "isPre1982"))
),
phases AS (
SELECT case_mkey, 'current' AS scheme, code, CASE WHEN code >= 990 THEN 990 ELSE code // 50 * 50 END AS main
FROM current_codes WHERE n = 1
UNION ALL
SELECT o.case_mkey, 'older', o."phaseOfFlightCode", w.main
FROM 'https://openairdocs.org/data/latest/ntsb_occurrences.parquet' o JOIN crosswalk w ON w.code = o."phaseOfFlightCode"
WHERE o.aircrafts_position = 1 AND o."occurrenceNumber" = 1 AND o.case_mkey NOT IN (SELECT case_mkey FROM current_codes)
),
case_phases AS (
SELECT p.*, c."eventDate", c."highestInjuryLevel" = 'Fatal' AS fatal, a.aircraft_model_code
FROM phases p JOIN 'https://openairdocs.org/data/latest/ntsb_case_detail.parquet' c ON c."mKey" = p.case_mkey
LEFT JOIN 'https://openairdocs.org/data/latest/ntsb_aircrafts.parquet' a ON a.case_mkey = p.case_mkey AND a.position = 1
WHERE c."eventDate" >= DATE '1962-01-01' AND p.main IN (SELECT main FROM phase_names)
)
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 year(c."eventDate") = 1981
AND c."mKey" IN (SELECT case_mkey FROM case_phases WHERE main = 450)
ORDER BY c."eventDate" DESC, c."ntsbNumber" DESCRun it at the DuckDB prompt, or in any tool that reads Parquet over HTTPS. More ways to query the release are on Use the data.
NTSB FTW82FPG06Accident · 1 fatalClosedPiper J3C-65 · Star City, ARNTSB LAX82FVG10Accident · No injuriesClosedHiller Acft UH-12E · Angels Camp, CANTSB DEN82FTK02Accident · 1 fatalClosedPitts S-1C · Kadoka, SDNTSB SEA82DYM07Accident · No injuriesClosedHiller Acft UH-12E · Nashville, ORNTSB FTW82DA023Accident · 1 fatalClosedPiper PA-28 · Garden City, LANTSB SEA82DYK06Accident · No injuriesClosedCessna 182 · Redmond, ORNTSB FTW82FRG12Accident · No injuriesClosedCessna 188 · Uvalde, TXNTSB LAX82FUM02Accident · 1 fatalClosedRockwell S-2R · Calipatria, CANTSB MKC82FA005Accident · 1 fatalClosedPitts SPL · Oak Grove, MONTSB FTW82DA021Accident · 1 fatalClosedBellanca 7ECA · Plainview, TXNTSB NYC82FA007Accident · 1 fatalClosedChampion 7GCAA · Scituate, MANTSB SEA82FA003Accident · 1 fatalClosedMaule M-5 · North Bend, ORNTSB CHI82DEP10Accident · Minor injuriesClosedGreat Lakes 2T-1A · Dalton, MINTSB ATL82FKG06Accident · Minor injuriesClosedEnstrom 280C · Savannah, GANTSB FTW82FQG06Accident · No injuriesClosedBoeing A75N1 · Sweetwater, TXNTSB FTW82DRJ04Accident · Minor injuriesClosedGrumman G-164A · Elm Grove, LANTSB LAX82FVD04Accident · 1 fatalClosedPitts S1-C · Livermore, CANTSB MKC82DCD03Accident · No injuriesClosedCallair A-9B · Fostoria, IANTSB LAX82FVD03Accident · 1 fatalClosedStits SA3A · Tracy, CANTSB FTW82DQG05Accident · Minor injuriesClosedPiper PA-25 · Tahoka, TXNTSB ATL82FKQ07Accident · Serious injuriesClosedGrumman G-164B · Hollandale, MSNTSB ATL81FKG05Accident · No injuriesClosedHughes 269C · Atlanta, GANTSB ATL82FA012Accident · 1 fatalClosedPiper PA-28 · Powell, TNNTSB LAX82FA008Accident · 1 fatalClosedCessna 172N · Prescott, AZNTSB LAX82DUJ03Accident · No injuriesClosedHughes 369HS · Salome, AZNTSB FTW82DRA06Accident · No injuriesClosedBellanca 7ECA · Arcola, TXNTSB MIA82FKT07Accident · 1 fatalClosedSuper Akro 1 · Miami, FLNTSB LAX82FA007Accident · 3 fatalClosedCessna 172N · Foresthill, CANTSB FTW82KPG01Accident · 1 fatalClosedPitts S-1 · Jonesboro, ARNTSB FTW82FA011Accident · 1 fatalClosedFairchild M-62A · Celina, TXNTSB ATL82FKQ04Accident · Serious injuriesClosedTaylorcraft BL-65 · Pascagoula, MSNTSB ATL82FKM02Accident · No injuriesClosedGR Lakes 2T-1A2 · Pinnacle, NCNTSB FTW82FRJ01Accident · Serious injuriesClosedMorrisey 2150 · Texarkana, TXNTSB FTW82FRG02Accident · 1 fatalClosedHawker Sdly SMK20 · Haringen, TXNTSB LAX82DVA03Accident · Minor injuriesClosedAero Comdr S2R · Corcoran, CANTSB LAX82FUM01Accident · No injuriesClosedAero Comdr S2R · Calipatria, CANTSB LAX81DVA02Accident · Minor injuriesClosedAir Tractor AT-301 · San Joaquin, CANTSB LAX82DVA04Accident · No injuriesClosedAero Comdr S2R · Bakersfield, CANTSB ANC82DAG01Accident · No injuriesClosedEnstrom F-28C · Big Lake, AKNTSB FTW81DPG70Accident · No injuriesClosedAir Tractor AT-301 · Lonoke, ARNTSB FTW82FPG69Accident · Minor injuriesClosedCessna 150F · England, ARNTSB ATL81FKQ29Accident · Serious injuriesClosedCessna A188B · Gore Springs, MSNTSB LAX81DUK10Accident · No injuriesClosedTexas Hel OH-13H · Yuma, AZNTSB CHI81FEX22Accident · Minor injuriesClosedCessna 152 · Cayuga, INNTSB MIA81DLA39Accident · No injuriesClosedCessna 188 · Newberry, FLNTSB CHI81DEV35Accident · Minor injuriesClosedGrumman G-164A · Dana, INNTSB MIA81DLD66Accident · Minor injuriesClosedRockwell S-2R · Ft.Pierce, FLNTSB LAX81FUM21Accident · No injuriesClosedEagle DW-1 · Westmoreland, CANTSB MKC81DCD39Accident · Minor injuriesClosedPiper PA-36 · Orange City, IANTSB NYC81DHD39Accident · Minor injuriesClosedPiper J-3C · Coatesville, PA