NTSB investigations, 1969
582 cases where the phase of flight was Initial climb.
Cases per year
| 1962 | 3 |
|---|---|
| 1963 | 4 |
| 1964 | 505 |
| 1965 | 555 |
| 1966 | 582 |
| 1967 | 587 |
| 1968 | 577 |
| 1969 | 582 |
| 1970 | 552 |
| 1971 | 541 |
| 1972 | 507 |
| 1973 | 482 |
| 1974 | 556 |
| 1975 | 543 |
| 1976 | 521 |
| 1977 | 556 |
| 1978 | 566 |
| 1979 | 502 |
| 1980 | 505 |
| 1981 | 499 |
| 1982 | 490 |
| 1983 | 507 |
| 1984 | 466 |
| 1985 | 418 |
| 1986 | 394 |
| 1987 | 380 |
| 1988 | 368 |
| 1989 | 348 |
| 1990 | 351 |
| 1991 | 324 |
| 1992 | 306 |
| 1993 | 307 |
| 1994 | 292 |
| 1995 | 289 |
| 1996 | 244 |
| 1997 | 272 |
| 1998 | 266 |
| 1999 | 239 |
| 2000 | 221 |
| 2001 | 219 |
| 2002 | 200 |
| 2003 | 227 |
| 2004 | 210 |
| 2005 | 204 |
| 2006 | 180 |
| 2007 | 202 |
| 2008 | 212 |
| 2009 | 173 |
| 2010 | 162 |
| 2011 | 177 |
| 2012 | 193 |
| 2013 | 122 |
| 2014 | 130 |
| 2015 | 165 |
| 2016 | 141 |
| 2017 | 149 |
| 2018 | 155 |
| 2019 | 146 |
| 2020 | 112 |
| 2021 | 166 |
| 2022 | 161 |
| 2023 | 163 |
| 2024 | 143 |
| 2025 | 134 |
| 2026 | 106 |
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\") = 1969
AND c.\"mKey\" IN (SELECT case_mkey FROM case_phases WHERE main = 350)
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") = 1969
AND c."mKey" IN (SELECT case_mkey FROM case_phases WHERE main = 350)
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 MKC70A0037Accident · 2 fatalClosedPiper PA-30 · Vermillion, SDNTSB MIA70D0281Accident · No injuriesClosedCessna 150 · Defuniak Spgs, FLNTSB LAX70D0227Accident · No injuriesClosedCessna 182L · Burbank, CANTSB MKC70F0312Accident · No injuriesClosedCessna 172 · Worthington, MNNTSB MIA70D0270Accident · Minor injuriesClosedCessna 150 · Spring City, TNNTSB MIA70D0313Accident · No injuriesClosedCessna 140 · Crawford, GANTSB LAX70D0226Accident · Minor injuriesClosedCessna 150 · Daggett, CANTSB CHI70A0041Accident · 2 fatalClosedPiper PA-28 · Franklin, INNTSB ANC70A0049Accident · Minor injuriesClosedCessna 402A · Port Moller, AKNTSB FTW70F0331Accident · No injuriesClosedCessna 140 · Sand Springs, OKNTSB ANC70D0091Accident · Minor injuriesClosedCessna 150F · Willow, AKNTSB SEA70F0126Accident · No injuriesClosedBeech J35 · Billings, MTNTSB SEA40D0135Accident · Serious injuriesClosedPiper J-3 · Nez Perce, IDNTSB FTW70F0337Accident · No injuriesClosedAeronca 7AC · Pineville, LANTSB DEN70D0159Accident · No injuriesClosedCessna 172 · Colorado Spg, CONTSB DEN70A0041Accident · 2 fatalClosedAero Comdr 1121B · Salt Lake City, UTNTSB SEA70D0144Accident · No injuriesClosedAero Comdr 520 · Salem, ORNTSB IAD70D0124Accident · Minor injuriesClosedCessna 150 · Poca, WVNTSB CHI70F0360Accident · No injuriesClosedCessna 170B · Carleton, MINTSB CHI70D0399Accident · Serious injuriesClosedCessna 172 · Wadsworth, OHNTSB OAK70F0193Accident · Serious injuriesClosedBeech 36 · Mammoth Lks, CANTSB NYC70I0062Incident · No injuriesClosedFairchild FH-227 · Windsor Lock, CTNTSB SEA70F0138Accident · Minor injuriesClosedCessna 172 · Port Townsnd, WANTSB MIA70A0045Accident · No injuriesClosedCurtiss-Wrt C-46F · Tampa, FLNTSB NYC70D0222Accident · No injuriesClosedTaylorcraft BC-12 · New Salem, NYNTSB NYC70D0242Accident · Minor injuriesClosedPiper PA-16 · Baldwinsville, NYNTSB MKC70F0274Accident · No injuriesClosedPiper PA-22 · Oglala, SDNTSB LAX70F0211Accident · Minor injuriesClosedPiper PA-24 · Pacoima, CANTSB MIA70F0244Accident · Minor injuriesClosedBeech 95 · Pompano Beach, FLNTSB SEA70F0152Accident · No injuriesClosedCessna 175 · Malin, ORNTSB UNK70X0105Accident · 2 fatalClosedNpiper PA-22 · Brockville, CanadaNTSB MKC70F0279Accident · No injuriesClosedPiper PA-28 · Miltonvale, KSNTSB ANC70D0077Accident · Minor injuriesClosedPiper PA-12 · Willow, AKNTSB IAD70A0034Accident · 1 fatalClosedPiper J3C · Apex, NCNTSB FTW70F0308Accident · No injuriesClosedCessna 150K · Shreveport, LANTSB ANC70F0080Accident · Minor injuriesClosedPiper PA-11 · Kenai, AKNTSB IAD70D0109Accident · No injuriesClosedMooney M20F · Hendersonville, NCNTSB FTW70F0307Accident · Minor injuriesClosedMooney M20C · Edmond, OKNTSB LAX70F0210Accident · Serious injuriesClosedBeech F35 · Tucson, AZNTSB IAD70D0128Accident · No injuriesClosedBeech B35 · Norfolk, VANTSB OAK70F0171Accident · Minor injuriesClosedAeronca 15AC · Reno, NVNTSB NYC70F0215Accident · Serious injuriesClosedCessna 140 · Hammondsport, NYNTSB NYC70D0220Accident · Minor injuriesClosedCessna 172 · Wilmington, VTNTSB NYC70F0231Accident · No injuriesClosedBeech 23 · Mattituck, NYNTSB IAD70D0122Accident · No injuriesClosedLuscombe 8A · Norfolk, VANTSB LAX70A0031Accident · No injuriesClosedBell 47J · Goleta, CANTSB MIA70F0240Accident · No injuriesClosedBoeing A75N1 · Immokalee, FLNTSB DEN70F0160Accident · Minor injuriesClosedFairchild 24W · Colo.Spgs, CONTSB DEN70F0141Accident · No injuriesClosedPiper PA-28 · Alameda, NMNTSB DEN70D0145Accident · No injuriesClosedCessna 120 · Akron, CO