NTSB investigations, 1979
1,135 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 | 375 |
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\") = 1979
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") = 1979
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 MIA80FLD25Accident · No injuriesClosedCessna 210 · Odessa, FLNTSB MIA80FLA09Accident · No injuriesClosedPiper PA-23 · Jacksonville, FLNTSB NYC80FNE07Accident · No injuriesClosedCessna 172 · Burlington, CTNTSB NYC80FHJ08Accident · No injuriesClosedPiper PA-28 · Amityville, NYNTSB CHI80FEK06Accident · No injuriesClosedGrumman AA1-B · Lima, OHNTSB IAD80DIG04Accident · No injuriesClosedSchleicher KA-7 · Lavale, MDNTSB FTW80DRD13Accident · No injuriesClosedCessna 185 · Morgan City, LANTSB UNK80X0104Accident · No injuriesClosedBoeing 747 · London, United KingdomNTSB LAX80DVG11Accident · No injuriesClosedCessna 172RG · Grass Valley, CANTSB CHI80FEC08Accident · No injuriesClosedCessna 152 · Frasher, MINTSB LAX80FVW07Accident · Serious injuriesClosedPiper PA-24 · Las Vegas, NVNTSB FTW80DPM06Accident · Minor injuriesClosedMaule M-5 · Vinitta, OKNTSB FTW80DPD08Accident · No injuriesClosedCessna 172 · Denton, TXNTSB SEA80DYM11Accident · No injuriesClosedCessna 177RG · Hood River, ORNTSB MIA80FLA13Accident · Minor injuriesClosedBeech C-23 · Jacksonville, FLNTSB LAX80FUA06Accident · No injuriesClosedPiper PA-22 · Dana Point, CANTSB FTW80DRJ08Accident · No injuriesClosedPiper PA-28 · Lufkin, TXNTSB FTW80DRA15Accident · No injuriesClosedBeech 95-55 · Houston, TXNTSB FTW80DQG07Accident · No injuriesClosedCessna 172 · Spearman, TXNTSB MKC80DTK07Accident · Serious injuriesClosedRaven RX-7 · Chancellor, SDNTSB UNK80X0103Accident · No injuriesClosedBeech A23 · Pocahontas, ARNTSB MKC80DCQ09Accident · No injuriesClosedCessna 210 · Hutchinson, KSNTSB CHI80DA018Accident · 2 fatalClosedBeech B58 · Taylorville, ILNTSB ANC80DAG20Accident · No injuriesClosedPiper PA-18 · King Salmon, AKNTSB SEA80FTA05Accident · No injuriesClosedPiper PA-22 · Laurel, MTNTSB SEA80DYA04Accident · No injuriesClosedAerosport Quail · Idaho Falls, IDNTSB LAX80FVA08Accident · No injuriesClosedBeech 60 · Fresno, CANTSB IAD80DKW03Accident · No injuriesClosedPiper PA-28 · Rockwood, TNNTSB MIA80FLD24Accident · No injuriesClosedPiper PA-30 · Vero Beach, FLNTSB MIA80FKJ16Accident · No injuriesClosedBeech 58 · Huntsville, ALNTSB FTW80DPG08Accident · No injuriesClosedBeech 76 · Hot Springs, ARNTSB ANC80DAG16Accident · No injuriesClosedPiper PA-11 · Montague Is, AKNTSB LAX80DVD06Accident · No injuriesClosedCessna 210 · Santa Rosa, CANTSB FTW80DRG12Accident · No injuriesClosedCessna 170 · Johnson City, TXNTSB DEN80DTE15Accident · No injuriesClosedCessna 182 · Ft Collins, CONTSB CHI80DEM11Accident · No injuriesClosedGrumman AA-1C · Marion, MINTSB MKC80FCQ08Accident · No injuriesClosedPiper PA-34 · Osawatomie, KSNTSB LAX80DVD05Accident · No injuriesClosedCessna 152 · Santa Rosa, CANTSB CHI80DEE12Accident · No injuriesClosedCessna 172N · Schaumburg, ILNTSB MKC80DCQ06Accident · No injuriesClosedCessna 182 · Glasco, KSNTSB LAX80FUD03Accident · No injuriesClosedCessna 441 · Los Angeles, CANTSB LAX80DUJ41Accident · No injuriesClosedCessna 150 · Sedona, AZNTSB IAD80FIG03Accident · No injuriesClosedPiper PA-28 · Edgewater, MDNTSB DEN80FTM05Accident · No injuriesClosedBeech 60 · Salt Lake City, UTNTSB MIA80FLD19Accident · No injuriesClosedCessna 210D · Titusville, FLNTSB DEN80FQA11Incident · No injuriesClosedCessna 402A · Albuquerque, NMNTSB NYC80FHJ05Accident · No injuriesClosedGrum Amer AA1B · Shirley, NYNTSB MKC80FTK06Accident · No injuriesClosedBeech A23 · Tea, SDNTSB MKC80DCJ04Accident · No injuriesClosedCessna 172 · Harrison, NENTSB MKC80DCA04Accident · Serious injuriesClosedAdams,Md A55 · Ballwin, MO