NTSB investigations, 1967
2,731 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 | 381 |
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 = 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") = 1967
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 MIA68D0372Accident · No injuriesClosedPiper PA-22 · Gretna, FLNTSB LAX68D0255Accident · No injuriesClosedBellanca 14-13 · Compton, CANTSB CHI68D0536Accident · No injuriesClosedPiper PA-28 · Waukegan, ILNTSB OAK68D0258Accident · Minor injuriesClosedPiper PA-28 · Mariposa, CANTSB MKC68F0408Accident · No injuriesClosedBeech 95-B55 · Hibbing, MNNTSB MIA68D0392Accident · No injuriesClosedBellanca 17-30 · Ft Lauderdale, FLNTSB LAX68D0242Accident · No injuriesClosedCessna 150 · Riverside, CANTSB LAX68D0268Accident · Minor injuriesClosedCessna 150 · Rialto, CANTSB DIA68D0196Accident · No injuriesClosedCessna 310 · Grundy, VANTSB CHI68F0498Accident · No injuriesClosedAero Comdr 200-D · Plymouth, MINTSB CHI68D0558Accident · No injuriesClosedPiper PA-30 · Willoughby, OHNTSB MKC68F0395Accident · No injuriesClosedStinson 10 · Grimes, IANTSB MKC68D0459Accident · No injuriesClosedBeech 35 · Linneus, MONTSB FTW68F0404Accident · No injuriesClosedCessna 210E · Searcy, ARNTSB NYC68F0305Accident · No injuriesClosedBeech 35R · Prospectville, PANTSB NYC68D0344Accident · No injuriesClosedMooney M20C · Springfield, VTNTSB LAX68D0276Accident · No injuriesClosedCessna 402 · Ontario, CANTSB DIA68D0172Accident · No injuriesClosedCessna 210 · Gassaway, WVNTSB DEN68D0177Accident · No injuriesClosedCessna 210 · Kemmerer, WYNTSB MKC68F0463Accident · No injuriesClosedPiper PA-24 · Cedar City, MONTSB FTW68A0046Accident · No injuriesClosedAero Comdr 1121 · Houston, TXNTSB DEN68D0183Accident · No injuriesClosedLuscombe 8E · Castle Rock, CONTSB UNK68X0117Accident · No injuriesClosedBellanca 14-13 · Swift River, CanadaNTSB OAK68D0261Accident · No injuriesClosedPiper PA-28 · Modesto, CANTSB NYC68D0336Accident · No injuriesClosedPiper PA-28 · Monticello, NYNTSB NYC68D0331Accident · No injuriesClosedPiper PA-24 · White Plains, NYNTSB MKC68F0418Accident · No injuriesClosedCessna 170 · Tioga, NDNTSB MIA68D0342Accident · No injuriesClosedCessna 172 · Merritt Isle, FLNTSB FTW68D0393Accident · No injuriesClosedErco 415-C · Wichita Falls, TXNTSB CHI68F0511Accident · No injuriesClosedCessna 150 · Lockport, ILNTSB CHI68D0527Accident · No injuriesClosedPiper PA-28 · Georgetown, KYNTSB NYC68D0375Accident · No injuriesClosedStinson 108-3 · Berlin, NJNTSB MKC68F0396Accident · No injuriesClosedPiper PA-22 · Enderlin, NDNTSB MIA68D0323Accident · No injuriesClosedBeech V35 · Pompano Beach, FLNTSB LAX68D0269Accident · No injuriesClosedBeech A35 · Oxnard, CANTSB FTW68F0418Accident · No injuriesClosedCessna 177 · San Antonio, TXNTSB FTW68D0401Accident · No injuriesClosedBeech A23 · Pryor, OKNTSB CHI68D0524Accident · No injuriesClosedCessna 150 · Hales Corners, WINTSB OAK68F0260Accident · No injuriesClosedPiper PA-32 · Truckee, CANTSB MIA68F0351Accident · No injuriesClosedBeech 23 · Birmingham, ALNTSB FTW68D0458Accident · No injuriesClosedCessna 182 · Aspermont, TXNTSB UNK68X0115Incident · No injuriesClosedPiper PA-23 · Caborca, MexicoNTSB MKC68F0412Accident · No injuriesClosedCessna 182 · Omaha, NENTSB CHI68A0055Accident · No injuriesClosedBeech C45H · Chicago, ILNTSB OAK68F0265Accident · No injuriesClosedCessna 310B · Concord, CANTSB MKC68D0389Accident · No injuriesClosedCessna 172 · Ames, KSNTSB MKC68D0374Accident · No injuriesClosedCessna 150F · Severy, KSNTSB MIA68D0391Accident · No injuriesClosedCessna 150F · Venice, FLNTSB MIA68A0055Accident · No injuriesClosedDehavilland 114 · Mayaguez, PRNTSB FTW68F0386Accident · No injuriesClosedPiper PA-23 · Little Rock, AR