NTSB investigations, 1980
1,123 cases where the phase of flight was Landing.
Cases per year
| 1962 | 22 |
|---|---|
| 1963 | 19 |
| 1964 | 2,152 |
| 1965 | 2,293 |
| 1966 | 2,496 |
| 1967 | 2,731 |
| 1968 | 1,964 |
| 1969 | 1,749 |
| 1970 | 1,680 |
| 1971 | 1,626 |
| 1972 | 1,480 |
| 1973 | 1,368 |
| 1974 | 1,387 |
| 1975 | 1,285 |
| 1976 | 1,307 |
| 1977 | 1,222 |
| 1978 | 1,325 |
| 1979 | 1,135 |
| 1980 | 1,123 |
| 1981 | 1,048 |
| 1982 | 939 |
| 1983 | 885 |
| 1984 | 853 |
| 1985 | 739 |
| 1986 | 661 |
| 1987 | 699 |
| 1988 | 605 |
| 1989 | 584 |
| 1990 | 556 |
| 1991 | 503 |
| 1992 | 534 |
| 1993 | 524 |
| 1994 | 516 |
| 1995 | 481 |
| 1996 | 529 |
| 1997 | 508 |
| 1998 | 545 |
| 1999 | 563 |
| 2000 | 517 |
| 2001 | 497 |
| 2002 | 516 |
| 2003 | 515 |
| 2004 | 522 |
| 2005 | 543 |
| 2006 | 470 |
| 2007 | 536 |
| 2008 | 538 |
| 2009 | 474 |
| 2010 | 512 |
| 2011 | 519 |
| 2012 | 500 |
| 2013 | 420 |
| 2014 | 412 |
| 2015 | 422 |
| 2016 | 527 |
| 2017 | 490 |
| 2018 | 518 |
| 2019 | 463 |
| 2020 | 420 |
| 2021 | 455 |
| 2022 | 494 |
| 2023 | 477 |
| 2024 | 477 |
| 2025 | 451 |
| 2026 | 381 |
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\") = 1980
AND c.\"mKey\" IN (SELECT case_mkey FROM case_phases WHERE main = 550)
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") = 1980
AND c."mKey" IN (SELECT case_mkey FROM case_phases WHERE main = 550)
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 DEN81FTC07Accident · No injuriesClosedCessna 182 · Worland, WYNTSB CHI81IA015Incident · No injuriesClosedCessna 210M · Toledo, OHNTSB CHI81FEK09Accident · No injuriesClosedPiper PA32RT · Columbus, OHNTSB CHI81FA016Accident · 2 fatalClosedPiper PA-28R · Elkhart, INNTSB LAX81FVM08Accident · No injuriesClosedRobertson T210 · Palo Alto, CANTSB CHI81FER10Accident · No injuriesClosedCessna 172N · Excelsior, MNNTSB CHI81FEP06Accident · No injuriesClosedCessna U206G · Kenosha, WINTSB MIA81FLD10Accident · No injuriesClosedCessna 182 · Reddick, FLNTSB LAX81DVG10Accident · No injuriesClosedCessna T210 · Red Bluff, CANTSB FTW81DRA13Accident · Serious injuriesClosedCessna 175A · Cameron, TXNTSB NYC81DHA06Accident · No injuriesClosedPiper PA-28 · Bedminster, NJNTSB CHI81FEV07Accident · No injuriesClosedPiper PA-22 · Germantown Hls, ILNTSB ATL81DLQ08Accident · No injuriesClosedAmer Avco AA-5A · Murry, KYNTSB FTW81DRA11Accident · No injuriesClosedCessna 206 · Houston, TXNTSB DEN81DTI01Accident · Minor injuriesClosedCessna 172 · Cut Bank, MTNTSB DEN81DTA03Accident · No injuriesClosedPiper PA-18 · Saco, MTNTSB NYC81FGM09Accident · No injuriesClosedHiller Acft FH1100 · Somerset, PANTSB FTW81DPA04Accident · No injuriesClosedBellanca 17-31A · Paris, TXNTSB LAX81DUQ09Accident · No injuriesClosedCessna 150 · San Fernando, AZNTSB MKC81DCD04Accident · No injuriesClosedCessna 180J · Thompson, IANTSB DEN81FTC06Accident · No injuriesClosedCessna 150K · Wright, WYNTSB LAX81FA024Accident · Minor injuriesClosedRobinson R-22 · Malibu, CANTSB CHI81FEC07Accident · No injuriesClosedPiper PA-32R · Belleville, MINTSB ANC81DAD02Accident · No injuriesClosedCessna 180 · St. John'S Hbr, AKNTSB LAX81FUJ16Accident · Minor injuriesClosedWaco BSO · Scottsdale, AZNTSB LAX81DUJ17Accident · No injuriesClosedPiper PA-38 · Wickenburg, AZNTSB FTW81DQA11Accident · No injuriesClosedBeech 18S · Aztec, NMNTSB ANC81DA009Accident · No injuriesClosedCessna 185 · Kasigluk, AKNTSB LAX81DVD07Accident · No injuriesClosedCessna 340A · Gasquet, CANTSB ATL81FIA01Accident · No injuriesClosedBeech B19 · Indianhead, MDNTSB FTW81DPA03Accident · No injuriesClosedCessna 182 · Waco, TXNTSB MIA81FLD20Accident · No injuriesClosedCessna 337 · Cape Coral, FLNTSB LAX81DUM08Accident · No injuriesClosedCessna 180 · Carlsbad, CANTSB MIA81FLD19Accident · Minor injuriesClosedPiper PA-28 · Tampa, FLNTSB MIA81FLA11Accident · No injuriesClosedAerostar 601P · Gainesville, FLNTSB LAX81DVW04Accident · No injuriesClosedCessna 182 · Reveille, NVNTSB MIA81FA025Accident · 1 fatalClosedPiper PA-31 · Tamarac, FLNTSB NYC81FGM08Accident · No injuriesClosedCessna 172H · New Cumberland, WVNTSB MKC81FCG18Accident · No injuriesClosedPiper PA-31 · Springfield, MONTSB LAX81FA031Accident · No injuriesClosedBeech 65-88 · Goleta, CANTSB LAX81DVG08Accident · No injuriesClosedPiper PA-12 · Lincoln, CANTSB MIA81FLA08Accident · Minor injuriesClosedJaguar NSBP-1 · St Augustine, FLNTSB ANC81DAG15Accident · No injuriesClosedCessna 180 · Whittier, AKNTSB CHI81DER08Accident · No injuriesClosedBeech 23 · Alexandria, MNNTSB SEA81DYK03Accident · No injuriesClosedPiper PA-34 · Sutherlin, ORNTSB NYC81FHJ05Accident · No injuriesClosedCessna 150 · Ronkonkomoa, NYNTSB LAX81DVA15Accident · No injuriesClosedBoeing A75N-1 · Lemoore, CANTSB DEN81FTE08Accident · No injuriesClosedCessna 177RG · Boulder, CONTSB LAX81FVA13Accident · 1 fatalClosedAero Comdr S2R · Huron, CANTSB FTW81DQD10Accident · No injuriesClosedBeech C35 · Carlsbad, NM