NTSB investigations, 1967
893 cases where the phase of flight was Enroute.
Cases per year
| 1962 | 18 |
|---|---|
| 1963 | 28 |
| 1964 | 703 |
| 1965 | 750 |
| 1966 | 856 |
| 1967 | 893 |
| 1968 | 881 |
| 1969 | 995 |
| 1970 | 996 |
| 1971 | 941 |
| 1972 | 894 |
| 1973 | 935 |
| 1974 | 968 |
| 1975 | 977 |
| 1976 | 927 |
| 1977 | 936 |
| 1978 | 1,018 |
| 1979 | 968 |
| 1980 | 873 |
| 1981 | 881 |
| 1982 | 786 |
| 1983 | 734 |
| 1984 | 747 |
| 1985 | 704 |
| 1986 | 693 |
| 1987 | 616 |
| 1988 | 656 |
| 1989 | 590 |
| 1990 | 548 |
| 1991 | 574 |
| 1992 | 542 |
| 1993 | 533 |
| 1994 | 498 |
| 1995 | 506 |
| 1996 | 511 |
| 1997 | 466 |
| 1998 | 467 |
| 1999 | 452 |
| 2000 | 451 |
| 2001 | 396 |
| 2002 | 407 |
| 2003 | 415 |
| 2004 | 380 |
| 2005 | 390 |
| 2006 | 325 |
| 2007 | 353 |
| 2008 | 256 |
| 2009 | 309 |
| 2010 | 269 |
| 2011 | 287 |
| 2012 | 309 |
| 2013 | 280 |
| 2014 | 258 |
| 2015 | 295 |
| 2016 | 324 |
| 2017 | 275 |
| 2018 | 340 |
| 2019 | 348 |
| 2020 | 248 |
| 2021 | 323 |
| 2022 | 312 |
| 2023 | 322 |
| 2024 | 368 |
| 2025 | 348 |
| 2026 | 234 |
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\") = 1967
AND c.\"mKey\" IN (SELECT case_mkey FROM case_phases WHERE main = 400)
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") = 1967
AND c."mKey" IN (SELECT case_mkey FROM case_phases WHERE main = 400)
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 MKC68F0404Accident · No injuriesClosedPiper PA-22 · Hot Springs, SDNTSB DIA68D0143Accident · No injuriesClosedCessna 150G · Crewe, VANTSB DEN68A0030Accident · 1 fatalClosedCessna 182 · Idaho Spring, CONTSB OAK68F0288Accident · Minor injuriesClosedCessna 170 · Lodi, CANTSB FTW68A0067Accident · Minor injuriesClosedAero Cmdr 500-B · Mena, ARNTSB DEN68A0028Accident · 1 fatalClosedCessna 320A · Kanosh, UTNTSB CHI68A0058Accident · 2 fatalClosedNavion F · Murphysboro, ILNTSB ANC68A0035Accident · Minor injuriesClosedAero Macchi AL60B · Nome, AKNTSB NYC68A0084Accident · 3 fatalClosedPiper PA-31 · Muncy, PANTSB MKC68D0399Accident · No injuriesClosedCessna 172E · Agency, IANTSB MKC68A0042Accident · No injuriesClosedCessna 210 · Ute, IANTSB MIA68F0362Accident · No injuriesClosedCessna 150 · Douglasville, GANTSB LAX68D0267Accident · No injuriesClosedCessna 182C · Big Bear City, CANTSB MIA68D0423Accident · No injuriesClosedErco 415-C · W.Palm Beach, FLNTSB LAX68D0282Incident · Minor injuriesClosedPiper PA-28 · Winslow, AZNTSB FTW68D0402Accident · No injuriesClosedCessna 172 · Stigler, OKNTSB MKC68F0469Accident · No injuriesClosedPiper PA-24 · Tamarack, MNNTSB MKC68D0452Accident · No injuriesClosedCessna 172 · Fenton, MONTSB MKC68A0040Accident · 1 fatalClosedLuscombe 8A · Lyons, KSNTSB LAX68A0063Accident · 1 fatalClosedGlendening Stits · Corona, CANTSB NYC68F0319Accident · No injuriesClosedPiper PA-25 · Beaver Falls, PANTSB CHI68F0515Accident · Minor injuriesClosedPiper PA-28 · Jackson, OHNTSB UNK68X0116Accident · 4 fatalClosedCessna 210 · Naucalpan, MexicoNTSB NYC68D0347Accident · No injuriesClosedCessna 310D · Lebanon, NHNTSB MIA68F0395Accident · No injuriesClosedBeech F35 · Centerville, TNNTSB MIA68A0058Accident · 2 fatalClosedCessna 170B · Warm Springs, GANTSB LAX68D0275Accident · No injuriesClosedBeech V35 · Eloy, AZNTSB FTW68F0407Accident · Serious injuriesClosedMooney M-22 · Kerrville, TXNTSB DEN68D0170Accident · Minor injuriesClosedPiper PA-24 · Willard, NMNTSB UNK68X0114Accident · No injuriesClosedCessna 150 · Buckner B Okinawa, JANTSB CHI68F0551Accident · No injuriesClosedBeech 95-A55 · Lebanon, ILNTSB MIA68D0358Accident · Minor injuriesClosedCessna 172 · Dunedin, FLNTSB DEN68D0188Accident · No injuriesClosedPiper PA-28 · Clines Cnrs, NMNTSB DEN68D0160Accident · No injuriesClosedBeech V35A · Clines Crns, NMNTSB NYC68D0326Accident · Minor injuriesClosedPiper PA-23 · Sea Side Heght, NJNTSB NYC68A0080Accident · 2 fatalClosedPiper PA-28 · Stowe, PANTSB MIA68F0333Accident · No injuriesClosedCessna 206 · Toa Baja, PRNTSB DEN68F0180Accident · No injuriesClosedPiper PA-23 · Tucumcari, NMNTSB CHI68F0503Accident · Minor injuriesClosedMooney M20C · Shadyside, OHNTSB DEN68D0194Accident · No injuriesClosedPiper PA-18A · Gillette, WYNTSB ANC68A0034Accident · Minor injuriesClosedCessna 180 · Teller, AKNTSB FTW68F0385Accident · Serious injuriesClosedCessna 150 · Lorena, TXNTSB DEN68A0026Accident · 2 fatalClosedPiper PA-32 · Corona, NMNTSB CHI68F0495Accident · No injuriesClosedCessna 310C · Prairie D Sac, WINTSB MKC68F0420Accident · Minor injuriesClosedBeech 65-A90 · Iowa City, IANTSB FTW68F0384Accident · No injuriesClosedCessna 150G · Addison, TXNTSB NYC68A0076Accident · 2 fatalClosedAero Comdr 560E · Seven Springs, PANTSB NYC68F0309Accident · Minor injuriesClosedPiper PA-28 · Danvers, MANTSB DIA68F0136Accident · Serious injuriesClosedCessna 150 · Knightdale, NCNTSB SEA68D0223Accident · No injuriesClosedCessna 180 · Prosser, WA