NTSB investigations, 1979
541 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 | 164 |
| 2025 | 186 |
| 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\") = 1979
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") = 1979
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 NYC80FA017Accident · 2 fatalClosedCessna 172N · Lindenhurst, NYNTSB NYC80DFJ02Accident · No injuriesClosedSchweizer SGS126 · Elmira, NYNTSB IAD80DID07Accident · No injuriesClosedLuscombe 8E · Indian Valley, VANTSB CHI80FA020Accident · 3 fatalClosedPiper PA-28 · Royal Oak, MINTSB IAD80DLJ06Accident · No injuriesClosedBaby GRT LK 1 · Durham, NCNTSB CHI80DEP11Accident · No injuriesClosedPiper PA-28 · Rio Creek, WINTSB NYC80FA016Accident · 2 fatalClosedPiper PA-28 · Broad Brook, CTNTSB DEN80FA016Accident · 1 fatalClosedBeech B60 · Hayden, CONTSB MKC80DER16Accident · Minor injuriesClosedBellanca 7ECA · Paynesville, MNNTSB DEN79FA015Accident · 5 fatalClosedCessna 421B · Eagle.Co, CONTSB MKC80FTG02Accident · Serious injuriesClosedBeech C35 · Grand Forks, NDNTSB LAX80DA028Accident · No injuriesClosedCessna 172N · Elko, NVNTSB MKC80FCD09Accident · No injuriesClosedCessna 177RG · Greenfield, IANTSB NYC80FNC05Accident · Serious injuriesClosedCessna 180 · Turner, MENTSB FTW80FA024Accident · 4 fatalClosedCessna 421B · Locust Grove, ARNTSB DEN80FA012Accident · 2 fatalClosedMitsubishi MU-2B · Provo, UTNTSB CHI80FEC07Accident · No injuriesClosedPiper PA-28 · Owosso, MINTSB CHI80FA016Accident · 2 fatalClosedCessna 172K · Edwardsville, ILNTSB CHI80DA017Accident · 2 fatalClosedCessna 310R · Green Bay, WINTSB MKC80DCQ08Accident · No injuriesClosedCessna 170B · Kingman, KSNTSB FTW80DRA13Accident · No injuriesClosedBeech 95-A55 · Angleton, TXNTSB CHI80FET05Accident · Serious injuriesClosedErco 415-CD · Lake Village, INNTSB CHI80FA015Accident · 1 fatalClosedPiper PA-28 · Mansfield, OHNTSB LAX80FVM09Accident · No injuriesClosedPiper J-3C · New Cuyana, CANTSB FTW80FRG13Accident · 1 fatalClosedErco 415-C · Troy, TXNTSB DEN80FTE13Accident · Minor injuriesClosedCessna 182 · Gunnison, CONTSB LAX80DUJ24Accident · No injuriesClosedCessna 172M · Window Rock, AZNTSB MIA80DLA11Accident · Minor injuriesClosedCessna 152 · Tallahassee, FLNTSB DEN80FTE07Accident · No injuriesClosedCessna 310K · Longmont, CONTSB SEA80FYP06Accident · Serious injuriesClosedCessna 305A · Sandpoint, IDNTSB FTW80FRD11Accident · Serious injuriesClosedCessna 421B · Lafayette, LANTSB DEN80DQG03Accident · No injuriesClosedCessna 206 · Hobbs, NMNTSB SEA80FA013Accident · 1 fatalClosedCessna T210M · Pasco, WANTSB SEA80FA012Accident · 2 fatalClosedAeronca 65-CA · Mountain Home, IDNTSB FTW80FPJ05Accident · No injuriesClosedPiper PA-38 · Guymon, OKNTSB IAD80DID04Accident · No injuriesClosedPiper PA-28 · Lynchburg, VANTSB FTW80FRA11Accident · Minor injuriesClosedCessna 172N · Houston, TXNTSB MIA80FKG12Accident · Minor injuriesClosedCessna 310K · Jesup, GANTSB LAX80FA022Accident · 2 fatalClosedBeech V35B · Show Low, AZNTSB MKC80FCG06Accident · Serious injuriesClosedBeech B-95 · Leawood, KSNTSB LAX80DUJ19Accident · Minor injuriesClosedCessna 152 · Phoenix, AZNTSB DEN80FA011Accident · 2 fatalClosedCessna 182 · Longmont, CONTSB SEA80FTA03Accident · No injuriesClosedCessna 182E · Red Lodge, MTNTSB LAX80DUJ17Accident · No injuriesClosedCessna 120 · Peoria, AZNTSB CHI80FEG05Accident · No injuriesClosedPiper PA-32 · Batavia, OHNTSB FTW80DPG05Accident · No injuriesClosedPiper PA-28 · Cherokee Vlg, ARNTSB NYC80FGM08Accident · No injuriesClosedLake LA4200 · New Castle, PANTSB MIA80FLA08Accident · Minor injuriesClosedPiper PA-31 · Jacksonville, FLNTSB MIA80FA014Accident · 4 fatalClosedPiper PA-32R · Anniston, ALNTSB LAX80FA018Accident · 5 fatalClosedCessna 180H · Weaverville, CA