NTSB investigations, 1981
289 cases where the phase of flight was Takeoff.
Cases per year
| 1962 | 4 |
|---|---|
| 1963 | 5 |
| 1964 | 352 |
| 1965 | 314 |
| 1966 | 410 |
| 1967 | 449 |
| 1968 | 327 |
| 1969 | 364 |
| 1970 | 345 |
| 1971 | 383 |
| 1972 | 265 |
| 1973 | 299 |
| 1974 | 343 |
| 1975 | 315 |
| 1976 | 281 |
| 1977 | 333 |
| 1978 | 344 |
| 1979 | 321 |
| 1980 | 251 |
| 1981 | 289 |
| 1982 | 254 |
| 1983 | 247 |
| 1984 | 238 |
| 1985 | 192 |
| 1986 | 182 |
| 1987 | 187 |
| 1988 | 168 |
| 1989 | 162 |
| 1990 | 185 |
| 1991 | 191 |
| 1992 | 146 |
| 1993 | 140 |
| 1994 | 175 |
| 1995 | 197 |
| 1996 | 145 |
| 1997 | 154 |
| 1998 | 153 |
| 1999 | 175 |
| 2000 | 162 |
| 2001 | 148 |
| 2002 | 153 |
| 2003 | 162 |
| 2004 | 129 |
| 2005 | 143 |
| 2006 | 127 |
| 2007 | 150 |
| 2008 | 170 |
| 2009 | 205 |
| 2010 | 198 |
| 2011 | 188 |
| 2012 | 184 |
| 2013 | 153 |
| 2014 | 188 |
| 2015 | 184 |
| 2016 | 191 |
| 2017 | 195 |
| 2018 | 172 |
| 2019 | 197 |
| 2020 | 193 |
| 2021 | 179 |
| 2022 | 176 |
| 2023 | 204 |
| 2024 | 216 |
| 2025 | 203 |
| 2026 | 179 |
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\") = 1981
AND c.\"mKey\" IN (SELECT case_mkey FROM case_phases WHERE main = 300)
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") = 1981
AND c."mKey" IN (SELECT case_mkey FROM case_phases WHERE main = 300)
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 NYC82FGT07Accident · No injuriesClosedAeronca 7AC · Wellsboro, PANTSB NYC82DA013Accident · No injuriesClosedAeronca 7AC · Wellsboro, PANTSB MKC82DA015Accident · No injuriesClosedSwearingen SA227 · Lincoln, NENTSB MKC82FCG14Accident · No injuriesClosedCessna 421C · Olathe, KSNTSB DEN81DTK03Accident · No injuriesClosedCessna 172 · Timber Lake, SDNTSB MKC82DCG13Accident · Minor injuriesClosedPiper PA-28 · St.Joseph, MONTSB ATL82FIA04Accident · Minor injuriesClosedBellanca 7ECA · Warrenton, VANTSB FTW82DRG16Accident · No injuriesClosedBell 47G-4A · Encinal, TXNTSB CHI82FER16Accident · 1 fatalClosedRutan EZ · Hackensack, MNNTSB DEN82DTK01Accident · No injuriesClosedCessna 150 · Elkton, SDNTSB NYC82FHM04Accident · No injuriesClosedCessna 150 · Newburgh, NYNTSB CHI82DEX02Accident · No injuriesClosedPiper PA-22 · Anderson, INNTSB LAX82DUM05Accident · Minor injuriesClosedHughes 369 · Winterhaven, CANTSB CHI82DER17Accident · No injuriesClosedPiper PA-38 · Albert Lea, MNNTSB FTW82DA028Accident · No injuriesClosedBell 206B · Gulf Of Mexico (Atlantic Ocean)NTSB DEN82DTM06Accident · No injuriesClosedBell 206B · Fruitland, UTNTSB LAX82DUJ19Accident · No injuriesClosedMooney M20E · Chandler, AZNTSB CHI82DER14Accident · No injuriesClosedBell 47G2 · Kerrick, MNNTSB FTW82FPG05Accident · No injuriesClosedPiper PA-60 · El Dorado, ARNTSB CHI82FA016Accident · 2 fatalClosedCessna 182E · Platteville, WINTSB NYC82FNA08Accident · No injuriesClosedCessna 140 · Westerly, RINTSB DEN82FTA04Accident · Minor injuriesClosedAyres S2R · Richey, MTNTSB NYC82FNA06Accident · No injuriesClosedCessna 170B · Stow, MANTSB LAX82DUJ11Accident · Minor injuriesClosedCessna 152 · Wikieup, AZNTSB DEN82FTM05Accident · Minor injuriesClosedAerospatle 315B · Cedar City, UTNTSB NYC82FGM06Accident · No injuriesClosedCessna 140 · Newry, PANTSB CHI82IA015Incident · No injuriesClosedDouglas DC-10 · Minneapolis, MNNTSB DEN82FTM04Accident · Minor injuriesClosedHiller UH12C · Logan, UTNTSB FTW82DRD05Accident · No injuriesClosedCessna A185F · Pecan Island, LANTSB SEA82DYM01Accident · No injuriesClosedCessna 172 · Long Creek, ORNTSB LAX82FUD01Accident · No injuriesClosedCessna T210L · Compton, CANTSB DEN82FTI06Accident · No injuriesClosedPiper PA-22 · Missoula, MTNTSB SEA82DYP04Accident · Minor injuriesClosedPiper PA-28 · George, WANTSB DEN82FTM01Accident · No injuriesClosedCessna 140 · Ogden, UTNTSB SEA82DYM03Accident · No injuriesClosedCessna 172 · Ukiah, ORNTSB ATL82FA011Accident · No injuriesClosedBeech 58 · Selma, ALNTSB NYC82DHA02Accident · No injuriesClosedPiper PA-32R · Princeton, NJNTSB LAX82DVA06Accident · No injuriesClosedEnstrom F-28C · Shaver Lake, CANTSB LAX82FUA02Accident · Serious injuriesClosedPiper PA-28 · Avalon, CANTSB FTW82DA013Accident · Minor injuriesClosedBell 206L-1 · Sabine, TXNTSB FTW82FPM02Accident · No injuriesClosedCessna 172 · Broken Arrow, OKNTSB LAX82DVA05Accident · No injuriesClosedBell 47G-4A · Wasco, CANTSB ANC82DA003Accident · Minor injuriesClosedBeech A36 · Quinhagak, AKNTSB ANC82DAG05Accident · No injuriesClosedCessna U206 · Pilot Point, AKNTSB DEN81DTE03Accident · No injuriesClosedCessna 180 · Canon City, CONTSB MIA82FLD02Accident · No injuriesClosedCessna 172M · Eustis, FLNTSB ANC82DAG03Accident · No injuriesClosedPiper PA-38 · Anchorage, AKNTSB DEN82FTE01Accident · No injuriesClosedPiper PA-32 · Akron, CONTSB MKC82DCG02Accident · No injuriesClosedPiper PA-38 · Forsyth, MONTSB FTW81DQG01Accident · No injuriesClosedRockwell S-2R · Garden City, TX