NTSB investigations, 1981
473 cases where the phase of flight was Approach.
Cases per year
| 1962 | 14 |
|---|---|
| 1963 | 10 |
| 1964 | 530 |
| 1965 | 502 |
| 1966 | 600 |
| 1967 | 640 |
| 1968 | 597 |
| 1969 | 572 |
| 1970 | 583 |
| 1971 | 550 |
| 1972 | 522 |
| 1973 | 543 |
| 1974 | 541 |
| 1975 | 530 |
| 1976 | 504 |
| 1977 | 586 |
| 1978 | 567 |
| 1979 | 541 |
| 1980 | 508 |
| 1981 | 473 |
| 1982 | 433 |
| 1983 | 445 |
| 1984 | 433 |
| 1985 | 408 |
| 1986 | 382 |
| 1987 | 327 |
| 1988 | 342 |
| 1989 | 324 |
| 1990 | 334 |
| 1991 | 308 |
| 1992 | 291 |
| 1993 | 276 |
| 1994 | 251 |
| 1995 | 301 |
| 1996 | 272 |
| 1997 | 261 |
| 1998 | 238 |
| 1999 | 244 |
| 2000 | 256 |
| 2001 | 230 |
| 2002 | 232 |
| 2003 | 236 |
| 2004 | 216 |
| 2005 | 229 |
| 2006 | 225 |
| 2007 | 258 |
| 2008 | 211 |
| 2009 | 190 |
| 2010 | 176 |
| 2011 | 194 |
| 2012 | 181 |
| 2013 | 189 |
| 2014 | 178 |
| 2015 | 158 |
| 2016 | 160 |
| 2017 | 191 |
| 2018 | 172 |
| 2019 | 163 |
| 2020 | 156 |
| 2021 | 178 |
| 2022 | 204 |
| 2023 | 186 |
| 2024 | 163 |
| 2025 | 186 |
| 2026 | 88 |
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 = 500)
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 = 500)
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 DCA82AA007Accident · 4 fatalClosedPiper PA-31 · Durango, CONTSB SEA82FA014Accident · 1 fatalClosedCessna 402C · Pullman, WANTSB DEN82FA013Accident · Serious injuriesClosedCessna T210M · Gunnison, CONTSB DEN82FA012Accident · 3 fatalClosedBeech E55 · Hayden, CONTSB DEN81DTA07Accident · Minor injuriesClosedCessna 152 · Big Timber, MTNTSB ATL82FA030Accident · 2 fatalClosedPiper PA-32R · Wallace, NCNTSB LAX82FVG11Accident · Minor injuriesClosedGrum Amer AA-1B · Vacaville, CANTSB ATL82FA025Accident · 1 fatalClosedBeech 24R · Greenville, SCNTSB MIA82FLD10Accident · No injuriesClosedCessna 172M · Zephyrhills, FLNTSB FTW82FQG11Accident · Minor injuriesClosedCessna 421 · Perryton, TXNTSB FTW81FA032Accident · 2 fatalClosedAero Comdr 690C · Patterson, LANTSB FTW82FA030Accident · 1 fatalClosedCessna 172 · Venus, TXNTSB FTW82DA031Accident · No injuriesClosedHawker Sidd HS.125 · Laredo, TXNTSB LAX82FUJ18Accident · No injuriesClosedCessna 172 · Tucson, AZNTSB NYC82DNA09Accident · 2 fatalClosedCessna 172N · Nantucket, MANTSB ATL82FLG06Accident · Serious injuriesClosedPiper PA-23 · Hilton Head, SCNTSB ATL82FLG05Accident · Minor injuriesClosedCessna 152 · Clemson, SCNTSB CHI82FA017Accident · 1 fatalClosedPiper PA-28 · Preston, MNNTSB LAX82FVM03Accident · Minor injuriesClosedCessna T210N · San Francisco, CANTSB MIA82FA015Accident · 2 fatalClosedMooney M20F · Richmond, VANTSB ATL82FID04Accident · 1 fatalClosedCessna 150 · Chesapeake, VANTSB ATL82DLQ04Accident · No injuriesClosedAdams A50S · Nicholasville, KYNTSB FTW82FA026Accident · 2 fatalClosedBeech V35A · Addison, TXNTSB DEN82FA011Accident · 4 fatalClosedBeech 95 · Cedar City, UTNTSB NYC82FHA03Accident · Serious injuriesClosedCessna 150K · Andover, NJNTSB NYC82FGT05Accident · No injuriesClosedPiper PA-24 · Montoursville, PANTSB MKC82DCG12Accident · No injuriesClosedPiper PA-28 · Willow Spgs, MONTSB ATL82FA022Accident · 1 fatalClosedCessna 206 · Pine Mountain, GANTSB NYC82FHM02Accident · No injuriesClosedCessna 152 · Mahopac, NYNTSB NYC82FA012Accident · 1 fatalClosedBeech 35 · Wyoming, DENTSB ATL81FLG03Accident · No injuriesClosedCessna 152 · Hilton Head, SCNTSB LAX82FVG07Accident · Serious injuriesClosedCessna 182H · Sacramento, CANTSB LAX82FA021Accident · 3 fatalClosedBeech J35 · Lake Havasu, AZNTSB MIA82FA014Accident · 1 fatalClosedCessna 172G · St.Petersburg, FLNTSB FTW82DQD03Accident · No injuriesClosedCessna 150 · Las Cruces, NMNTSB MKC82DCA05Accident · No injuriesClosedCessna 172D · Jefferson City, MONTSB ATL82FLQ03Accident · Serious injuriesClosedCessna 206 · Bowling Green, KYNTSB NYC82FHD05Accident · Minor injuriesClosedCessna 177B · Bridgeport, NJNTSB FTW82FPM05Accident · Serious injuriesClosedPiper PA-28 · Tulsa, OKNTSB DEN82FA007Accident · Minor injuriesClosedCessna 402C · Dickinson, NDNTSB ATL82FA018Accident · 1 fatalClosedCessna 425 · Natchez, MSNTSB LAX82FVW02Accident · No injuriesClosedPiper PA-28 · Las Vegas, NVNTSB MIA82FLD07Accident · Minor injuriesClosedPiper PA-22 · Zephyrhills, FLNTSB CHI82FEM04Accident · Serious injuriesClosedCessna 172 · Kinross, MINTSB SEA82DYK04Accident · No injuriesClosedCessna 185F · Burns, ORNTSB NYC82FA009Accident · 4 fatalClosedPiper PA-32 · Mount Pocono, PANTSB CHI82FEE05Accident · No injuriesClosedCessna 172N · Grayslake, ILNTSB ANC82DAG07Accident · Minor injuriesClosedFechtner KR-2 · Anchorage, AKNTSB SEA82FYM04Accident · Serious injuriesClosedPiper PA-22 · Hillsboro, ORNTSB LAX82FUJ07Accident · No injuriesClosedRaven AX-7 · Phoenix, AZ