NTSB investigations, 1977
1,222 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\") = 1977
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") = 1977
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 FTW78DRD12Accident · No injuriesClosedHughes 369HS · Harahan, LANTSB CHI78IA013Incident · Minor injuriesClosedBoeing 727 · Chicago, ILNTSB CHI78FEK06Accident · Minor injuriesClosedCessna 150 · Clairsville, OHNTSB CHI78FEI08Accident · Serious injuriesClosedCessna 172E · Louisville, OHNTSB NYC78FNE04Accident · No injuriesClosedCessna 177 · Oxford, CTNTSB MKC78DER19Accident · No injuriesClosedCessna 310Q · Rochester, MNNTSB NYC78FGM14Accident · No injuriesClosedPiper PA-28 · Martinsburg, PANTSB NYC78DNC08Accident · No injuriesClosedSchweizer SGS232 · Warren, VTNTSB MKC78DCQ11Accident · No injuriesClosedCessna 172 · Phillipsburg, KSNTSB MIA78DKJ16Accident · No injuriesClosedPiper PA-32R · Selma, ALNTSB SEA78DYM13Accident · No injuriesClosedPiper PA-28R · Aurora, ORNTSB OAK78DVA19Accident · No injuriesClosedCessna 150 · Chowchilla, CANTSB MKC78FCA13Accident · No injuriesClosedCessna 195 · Willow Springs, MONTSB IAD78DLJ08Accident · No injuriesClosedCessna 172 · Raeford, NCNTSB CHI78DEM07Accident · No injuriesClosedCessna 150 · Crystal Falls, MINTSB LAX78FUM10Accident · No injuriesClosedPiper PA-28 · Santee, CANTSB FTW78FPA11Accident · No injuriesClosedPiper PA-24 · Paris, TXNTSB ANC78DAG20Accident · No injuriesClosedPiper PA-22 · Talkeenta, AKNTSB NYC78DNC07Accident · No injuriesClosedCessna 140 · Jaffey, NHNTSB LAX78DUM09Accident · No injuriesClosedBellanca 7KCAB · Escondido, CANTSB SEA78DYK05Accident · No injuriesClosedPiper PA-28 · Agness, ORNTSB NYC78DNC10Accident · No injuriesClosedPiper PA-28 · West Dover, VTNTSB NYC78DNC06Accident · Minor injuriesClosedCessna 177 · Jaffrey, NHNTSB NYC78DNC05Accident · No injuriesClosedCessna 172M · Nashua, NHNTSB MIA78DLA14Accident · No injuriesClosedCessna 172 · St Augustine, FLNTSB MIA78DKJ15Accident · No injuriesClosedCessna 177B · Tuscaloosa, ALNTSB FTW78FPA09Accident · Minor injuriesClosedPiper PA-28 · Allen, TXNTSB CHI78DEE15Accident · No injuriesClosedPiper PA28 · Wheeling, ILNTSB MKC78DCD10Accident · Minor injuriesClosedCessna 150 · Tipton, IANTSB MIA78FLA11Accident · No injuriesClosedCessna 310C · Jacksonville, FLNTSB IAD78FA024Accident · Minor injuriesClosedCessna 150 · Arlington, TNNTSB FTW78FPJ10Accident · No injuriesClosedPiper PA-32 · Oklahoma City, OKNTSB MKC78FTK07Accident · No injuriesClosedPiper PA-18 · Mission Ridge, SDNTSB MKC78DCQ10Accident · No injuriesClosedPiper PA-28 · Leoti, KSNTSB IAD78FA023Accident · No injuriesClosedHamilton E18S · Covington, KYNTSB OAK78FVM07Accident · No injuriesClosedPiper PA-31 · San Francisco, CANTSB LAX78DUM08Accident · No injuriesClosedPiper PA-24 · Santee, CANTSB SEA78DYM11Accident · No injuriesClosedCessna 152 · Dayton, ORNTSB IAD78DLJ04Accident · No injuriesClosedAeronca 7AC · Watha, NCNTSB FTW78DRG20Accident · Minor injuriesClosedGrum-Amer AA-1B · West Realitos, TXNTSB FTW78DRG19Accident · No injuriesClosedCessna 172 · San Saba, TXNTSB CHI78FEI05Accident · No injuriesClosedPiper PA-18 · Smithville, OHNTSB SEA78FTA09Accident · No injuriesClosedCessna 150 · Peerless, MTNTSB MKC78IA015Incident · No injuriesClosedCessna 402 · Rolla, MONTSB DEN78FQA08Accident · Minor injuriesClosedPiper PA-22 · Albuquerque, NMNTSB NYC78FFA12Accident · No injuriesClosedCessna 310 · Hudson, NYNTSB LAX78FUD02Accident · No injuriesClosedHughes 369D · Los Angeles, CANTSB LAX78FUJ18Accident · No injuriesClosedPiper PA-30 · Tucson, AZNTSB FTW78FPD10Accident · No injuriesClosedCessna 172 · Ft.Worth, TXNTSB FTW78DQG15Accident · No injuriesClosedPiper PA-24 · Amarillo, TX