NTSB investigations, 1964
415 cases where the phase of flight was Maneuvering.
Cases per year
| 1964 | 415 |
|---|---|
| 1965 | 419 |
| 1966 | 366 |
| 1967 | 410 |
| 1968 | 394 |
| 1969 | 360 |
| 1970 | 330 |
| 1971 | 384 |
| 1972 | 359 |
| 1973 | 407 |
| 1974 | 410 |
| 1975 | 407 |
| 1976 | 480 |
| 1977 | 443 |
| 1978 | 433 |
| 1979 | 384 |
| 1980 | 377 |
| 1981 | 374 |
| 1982 | 416 |
| 1983 | 476 |
| 1984 | 462 |
| 1985 | 402 |
| 1986 | 357 |
| 1987 | 357 |
| 1988 | 349 |
| 1989 | 313 |
| 1990 | 307 |
| 1991 | 350 |
| 1992 | 309 |
| 1993 | 315 |
| 1994 | 322 |
| 1995 | 320 |
| 1996 | 279 |
| 1997 | 262 |
| 1998 | 259 |
| 1999 | 267 |
| 2000 | 281 |
| 2001 | 257 |
| 2002 | 241 |
| 2003 | 263 |
| 2004 | 224 |
| 2005 | 212 |
| 2006 | 203 |
| 2007 | 222 |
| 2008 | 234 |
| 2009 | 208 |
| 2010 | 222 |
| 2011 | 250 |
| 2012 | 236 |
| 2013 | 216 |
| 2014 | 199 |
| 2015 | 217 |
| 2016 | 177 |
| 2017 | 201 |
| 2018 | 187 |
| 2019 | 197 |
| 2020 | 165 |
| 2021 | 186 |
| 2022 | 186 |
| 2023 | 191 |
| 2024 | 165 |
| 2025 | 145 |
| 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\") = 1964
AND c.\"mKey\" IN (SELECT case_mkey FROM case_phases WHERE main = 450)
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") = 1964
AND c."mKey" IN (SELECT case_mkey FROM case_phases WHERE main = 450)
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 UNK65X1203Accident · 2 fatalClosedPiper PA24 · Cushing, OKNTSB UNK65X1134Accident · 1 fatalClosedPiper PA15 · Denham Springs, LANTSB UNK65X1075Accident · 1 fatalClosedCessna 150 · Odessa, TXNTSB UNK65X1066Accident · No injuriesClosedCessna 170B · Blairstown, NJNTSB UNK65X1065Accident · 2 fatalClosedCessna 140 · Oak Brook, ILNTSB UNK65X0992Accident · 2 fatalClosedRyan ST3KR · Altus, OKNTSB UNK65X0975Accident · No injuriesClosedCessna 150 · Blue Springs, MONTSB UNK65X0926Accident · Minor injuriesClosedStits SA3A · Eureka, CANTSB UNK65X0875Accident · No injuriesClosedCessna 182 · Broken Arrow, OKNTSB UNK65X0858Accident · Minor injuriesClosedAeronca 7AC · Emporium, PANTSB UNK65X0821Accident · Minor injuriesClosedPiper PA-22 · Waynesburg, PANTSB UNK65X0817Accident · Minor injuriesClosedHughes 269A · Sebring, FLNTSB UNK65X0816Accident · 1 fatalClosedPeper J-3C · Minden, NVNTSB UNK65X0815Accident · Serious injuriesClosedAeronca 65TC · Salina, KSNTSB UNK65X0788Accident · 1 fatalClosedPiper PA-18 · Granite, CONTSB UNK65X0750Accident · Minor injuriesClosedAeronca 7AC · Hendersonville, NCNTSB UNK65X0744Accident · 1 fatalClosedCessna 140A · Tulsa, OKNTSB UNK65X0730Accident · 1 fatalClosedCessna 172 · Caddo Lake, LANTSB UNK65X0708Accident · Minor injuriesClosedCessna 182 · Belt, MTNTSB UNK65X0698Accident · No injuriesClosedCessna 150E · Tuscaloosa, ALNTSB UNK65X0680Accident · Serious injuriesClosedCessna 150 · Red Rock, AZNTSB UNK65X0662Accident · 1 fatalClosedMooney M18C · Perry, OKNTSB UNK65X0661Accident · Serious injuriesClosedDean Case Specl · Fairview, OKNTSB UNK65X0606Accident · No injuriesClosedPiper J3 · Kendall, NYNTSB UNK65X0602Accident · 2 fatalClosedPiper PA-28 · Springville, CANTSB UNK65X0589Accident · No injuriesClosedCessna 150 · Hopewell Jct, NYNTSB UNK65X0536Accident · Minor injuriesClosedBell 47G2 · Yuma, AZNTSB UNK65X0523Accident · 4 fatalClosedCessna 182C · Pecos, TXNTSB UNK65X0509Accident · Minor injuriesClosedPiper J3 · Ontario County, NYNTSB UNK65X0504Accident · No injuriesClosedSikorsky S58C · Joliet, ILNTSB UNK65X0496Accident · No injuriesClosedCessna 172 · Theodore, ALNTSB UNK65X0474Accident · Minor injuriesClosedCessna 150 · Medical Lake, WANTSB UNK65X0463Accident · No injuriesClosedCessna 170 · Wrightswood, CANTSB UNK65X0438Accident · Serious injuriesClosedAeronca 11AC · Boscobel, WINTSB UNK65X0431Accident · No injuriesClosedCessna 172D · Broadus, MTNTSB UNK65X0409Accident · Minor injuriesClosedTaylorcraft BC · Spantanburg, SCNTSB UNK65X0389Accident · No injuriesClosedMorrow II · Hobbs, NMNTSB UNK65X0382Accident · Serious injuriesClosedBell 47G2A · Battle Creek, MINTSB UNK65X0379Accident · Serious injuriesClosedBoeing A75 · Mesa, AZNTSB UNK65X0309Accident · 4 fatalClosedCessna 185B · Augusta, MTNTSB UNK65X0306Accident · No injuriesClosedMason Lulu · Rosamond, CANTSB UNK65X0305Accident · Minor injuriesClosedAeronca 7AC · Floris, IANTSB UNK65X0270Accident · Minor injuriesClosedBell 47G2 · Bakersfield, CANTSB UNK65X0264Accident · No injuriesClosedPiper PA18A · Lubbock, TXNTSB UNK65X0260Accident · 1 fatalClosedConvair L-13 · Mendota, CANTSB UNK65X0222Accident · No injuriesClosedSnow S2C600 · Ropesville, TXNTSB UNK65X0187Accident · No injuriesClosedHughes 269A · Bakersfield, CANTSB UNK65X0173Accident · Minor injuriesClosedNardi FN333 · Chandeleur Is, LANTSB UNK65X0162Accident · Minor injuriesClosedVultee L13 · Fresno, CANTSB UNK65X0148Accident · 1 fatalClosedAeronca 7AC · Amarillo, TX