NTSB investigations, 1967
640 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\") = 1967
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") = 1967
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 CHI68F0529Accident · Serious injuriesClosedPiper PA-24 · Manistee, MINTSB FTW68D0410Accident · Minor injuriesClosedCessna 310D · Midland, TXNTSB FTW68D0403Accident · No injuriesClosedPiper PA-28 · Jonesboro, ARNTSB DEN68F0179Accident · Minor injuriesClosedCessna 210 · Denver, CONTSB CHI68F0519Accident · Minor injuriesClosedCessna 182 · Greencastle, INNTSB LAX68F0260Accident · Serious injuriesClosedCessna 140 · Redlands, CANTSB CHI68D0525Accident · Minor injuriesClosedCessna 182 · Roscoe, ILNTSB OAK68D0340Accident · Minor injuriesClosedCessna 182 · Fair Oaks, CANTSB FTW68D0409Accident · No injuriesClosedBeech A23 · Lamesa, TXNTSB MKC68A0041Accident · No injuriesClosedBrantly B-2A · Gordon, NENTSB LAX68D0253Incident · No injuriesClosedDehaviland DHC-2 · Llano, CANTSB NYC68D0317Accident · No injuriesClosedCessna 337 · Belle Vernon, PANTSB FTW68F0408Accident · Minor injuriesClosedCessna 150 · Angleton, TXNTSB CHI68F0512Accident · Serious injuriesClosedBeech D18S · Beloit, ILNTSB OAK68D0314Accident · No injuriesClosedPiper PA-22 · Travis Afb, CANTSB FTW68A0063Accident · 1 fatalClosedPiper PA-24 · Manvel, TXNTSB MIA68F0371Accident · No injuriesClosedPiper PA-28 · Hialeah, FLNTSB NYC68A0079Accident · 4 fatalClosedPiper PA-28 · Bridgeport, CTNTSB MKC68F0391Accident · Minor injuriesClosedCessna 150 · Rosemount, MNNTSB CHI68F0501Accident · Minor injuriesClosedBeech K35 · Wheeling, ILNTSB ANC68F0074Accident · No injuriesClosedPiper PA-18 · Sitka, AKNTSB NYC68F0330Accident · 1 fatalClosedBeech T-34 · Butler, PANTSB OAK68A0050Accident · 2 fatalClosedBell 47J-2A · Hanalei, HINTSB NYC68F0321Accident · Minor injuriesClosedBeech D18S · New Cumberland, PANTSB MIA68A0054Accident · 2 fatalClosedAero Comdr 560E · Kingshill, VINTSB OAK68D0248Accident · No injuriesClosedBeech H35 · Monterey, CANTSB SEA68A0043Accident · No injuriesClosedPiper PA-24 · Seattle, WANTSB CHI68A0053Accident · 7 fatalClosedBeech H18 · Madison, WINTSB NYC68F0328Accident · Minor injuriesClosedPiper PA-28 · Ronkonkoma, NYNTSB LAX68D0235Accident · No injuriesClosedCassna 182 · Escondido, CANTSB CHI68F0496Accident · No injuriesClosedCessna 150 · Columbus, OHNTSB CHI68A0052Accident · 2 fatalClosedHughes 269B · Evansville, INNTSB OAK68D0237Accident · No injuriesClosedCessna 182 · Oroville, CANTSB CHI68F0598Accident · Serious injuriesClosedPiper PA-32 · Wauwatosa, WINTSB MIA68F0350Accident · No injuriesClosedBeech C-45H · Miami, FLNTSB MKC68D0378Accident · No injuriesClosedCessna 150 · Creve Coeur, MONTSB LAX68D0223Accident · No injuriesClosedPiper J-3 · Filmore, CANTSB CHI68F0499Accident · 1 fatalClosedPiper PA-30 · Lowell, MINTSB DIA68A0025Accident · 2 fatalClosedCessna 310F · Norfolk, VANTSB DEN68D0163Accident · No injuriesClosedCessna 150 · Gillette, WYNTSB CHI68F0452Accident · No injuriesClosedPiper PA-28 · Ann Arbor, MINTSB OAK68A0048Accident · 1 fatalClosedPiper PA-23 · Reno, NVNTSB OAK68D0252Accident · No injuriesClosedN.American SNJ-B5 · Honolulu, HINTSB OAK68D0246Accident · No injuriesClosedSnow S2C · Tranquillty, CANTSB DEN68D0149Accident · No injuriesClosedCessna 310 · Grand Junct, CONTSB DEN68D0162Accident · No injuriesClosedCessna 182 · Hobbs, NMNTSB OAK68D0224Accident · Minor injuriesClosedCessna 421 · Salinas, CANTSB MIA68D0311Accident · No injuriesClosedCessna 170A · Tampa, FLNTSB MIA68A0053Accident · 3 fatalClosedLear Jet 23 · Orlando, FLNTSB DIA68D0171Accident · No injuriesClosedMooney M20C · Fairmont, WV