NTSB investigations, 1976
504 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\") = 1976
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") = 1976
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 OAK77FVA13Accident · Minor injuriesClosedCessna 150L · Madera, CANTSB NYC77FFJ08Accident · No injuriesClosedTed Smith 601 · Dunkirk, NYNTSB DEN77FA016Accident · 3 fatalClosedCessna 182P · Santa Rosa, NMNTSB MIA77FA021Accident · 2 fatalClosedCessna 172N · Chiefland, FLNTSB FTW77FRD05Accident · No injuriesClosedGrumman G-164A · Welsh, LANTSB FTW77FRD03Accident · No injuriesClosedBell 206B · Gulf Of Mexico (Gulf of Mexico)NTSB CHI77FEP12Accident · Serious injuriesClosedPiper PA-30A · Madison, WINTSB FTW77FRD04Accident · Serious injuriesClosedPiper PA-22 · Port Sulphur, LANTSB FTW77FA024Accident · 1 fatalClosedBeech :50 · Mcallen, TXNTSB CHI77FA017Accident · 1 fatalClosedPiper PA-23 · North Royalton, OHNTSB FTW77DRG21Accident · Minor injuriesClosedCessna 150 · Mason, TXNTSB NYC77FGM07Accident · No injuriesClosedCessna 340 · Belle Vernon, PANTSB OAK77FVG16Accident · Serious injuriesClosedGrum Amer AA1A · Willows, CANTSB FTW77FRG19Accident · No injuriesClosedBeech D50 · San Marcos, TXNTSB DCA77AA008Accident · Serious injuriesClosedPiper PA-28 · Baltimore, MDNTSB DEN77FTE10Accident · No injuriesClosedPiper PA-25 · Broomfield, CONTSB SEA77FA010Accident · Serious injuriesClosedCessna TU206C · Battle Ground, WANTSB LAX77FUM10Accident · Serious injuriesClosedPiper J5A · Brawley, CANTSB IAD77DKM09Accident · No injuriesClosedPiper PA-28R · Bryson City, NCNTSB NYC77FNC13Accident · Serious injuriesClosedPiper PA-18 · Millinocket, MENTSB LAX77PUJ13Accident · No injuriesClosedCessna 150 · Parker, AZNTSB CHI77FA015Accident · 2 fatalClosedAeronca 7AC · Freedom, WINTSB FTW77FA022Accident · 1 fatalClosedAmerican AA1B · Oklahoma City, OKNTSB IAD77DID07Accident · Minor injuriesClosedPiper PA-32R · Charlottesvlle, VANTSB DCA77AA006Accident · 3 fatalClosedDehavilland DHC-6 · Wildwood, NJNTSB CHI77FEM13Accident · No injuriesClosedCessna 421B · Bellaire, MINTSB FTW77FA019Accident · 1 fatalClosedCessna 172H · Houston, TXNTSB DEN77FTE09Accident · No injuriesClosedCessna 150 · Boulder, CONTSB CHI77FEI06Accident · Serious injuriesClosedPiper PA-22 · Painesville, OHNTSB CHI76FA013Accident · 1 fatalClosedCessna 421B · Winchester, INNTSB NYC77DNC11Accident · Serious injuriesClosedPiper PA-22 · Newburgh, MENTSB LAX77DUJ01Accident · No injuriesClosedCessna 206 · Taylor, AZNTSB LAX77FA014Accident · 5 fatalClosedAerostar 601P · Costa Mesa, CANTSB LAX77FUQ11Accident · No injuriesClosedCessna 340 · Santa Ynez, CANTSB MIA77FLA08Accident · No injuriesClosedCessna 402 · Jacksonville, FLNTSB DEN77FA011Accident · 2 fatalClosedPiper PA-32 · Denver, CONTSB OAK77DXQ03Accident · No injuriesClosedPiper PA-28 · Minden, NVNTSB NYC77FFJ07Accident · No injuriesClosedBeech 95A · Buffalo, NYNTSB IAD77FA014Accident · 4 fatalClosedPiper PA-23 · Lexington, KYNTSB ANC77DAD01Accident · No injuriesClosedPiper PA-28 · Skagway, AKNTSB OAK77DVA11Accident · No injuriesClosedLuscombe 8A · Visalia, CANTSB NYC77FA016Accident · 3 fatalClosedPiper PA-28 · Westhampton, NYNTSB MIA77FA012Accident · 2 fatalClosedCessna 182P · Savannah, GANTSB FTW77DRG13Accident · No injuriesClosedPiper PA-28 · Killeen, TXNTSB SEA77DYC08Accident · No injuriesClosedLuscombe 8A · Mitchell, ORNTSB IAD77FIG07Accident · No injuriesClosedCessna 172 · Mathias, WVNTSB NYC77FA015Accident · 1 fatalClosedCessna 150L · Sherburne, VTNTSB SEA77FA006Accident · 1 fatalClosedBellanca 7GCBC · Geyser, MTNTSB IAD77FKW08Accident · Serious injuriesClosedPiper PA-28 · Athens, TNNTSB DEN77DQA05Accident · No injuriesClosedCessna 182 · Farmington, NM