NTSB investigations, 1967
449 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 | 204 |
| 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\") = 1967
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") = 1967
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 LAX68D0281Accident · Minor injuriesClosedPiper PA-28 · Lancaster, CANTSB DEN68D0191Accident · No injuriesClosedCessna 172 · Richfield, UTNTSB MIA68A0059Accident · No injuriesClosedBeech C18 · St.Croix, VINTSB DEN68D0175Accident · No injuriesClosedLuscombe 8F · Broomfield, CONTSB DEN68D0192Accident · No injuriesClosedCessna 182 · Spanish Fork, UTNTSB MIA68D0424Accident · No injuriesClosedPiper PA-32 · Eufala, ALNTSB FTW68D0394Accident · Minor injuriesClosedStinson 108-1 · Gueydan, LANTSB MKC68D0397Accident · No injuriesClosedPiper PA-22 · Forest City, IANTSB ANC68D0076Accident · Minor injuriesClosedLuscombe 8A · Fairbanks, AKNTSB MKC68D0398Accident · No injuriesClosedCessna 180 · Millard, NENTSB LAX68D0306Accident · Minor injuriesClosedCessna 150 · Calif.City, CANTSB NYC68F0311Accident · No injuriesClosedPiper PA-28 · Skaneateles, NYNTSB LAX68F0259Accident · No injuriesClosedBeech D18S · Phoenix, AZNTSB MKC68D0373Accident · No injuriesClosedPiper PA-28 · Iowa City, IANTSB LAX68D0239Accident · No injuriesClosedPiper PA-28 · Torrance, CANTSB OAK68O0009Accident · Minor injuriesClosedBeech 10-2 · Phu Loi, VMNTSB MIA68D0430Accident · Minor injuriesClosedCessna 172D · Chester, SCNTSB LAX68F0217Accident · No injuriesClosedVultee BT-13 · Lancaster, CANTSB FTW68O0014Accident · No injuriesClosedCessna 180 · Tamaulipas, MexicoNTSB CHI68D0455Accident · Minor injuriesClosedCessna 172 · Wellston, OHNTSB SEA68D0222Accident · Minor injuriesClosedCessna 140 · Davenport, WANTSB NYC68F0329Accident · No injuriesClosedCessna 150G · Bellefonte, PANTSB MIA68D0444Accident · No injuriesClosedCessna 182 · Gainesville, FLNTSB OAK68D0226Accident · No injuriesClosedPiper PA-28 · Livermore, CANTSB NYC68F0301Accident · No injuriesClosedCessna 180 · Spring Valley, NYNTSB MIA68D0328Accident · No injuriesClosedPiper PA-30 · Dothan, ALNTSB SEA68D0210Accident · No injuriesClosedPiper PA-18 · Ovando, MTNTSB DEN68D0167Accident · No injuriesClosedPiper PA-28 · Provo, UTNTSB DEN68D0151Accident · No injuriesClosedCessna 172 · Denver, CONTSB MKC68D0351Accident · No injuriesClosedPiper PA-32 · Beaver City, NENTSB OAK68A0046Accident · Minor injuriesClosedBoeing 707 · Honolulu, HINTSB LAX68F0218Accident · No injuriesClosedPiper PA-23 · Long Beach, CANTSB FTW68F0362Accident · No injuriesClosedPiper PA-28 · Yukon, OKNTSB LAX68A0050Accident · No injuriesClosedBell 47G-2 · Huntington, CANTSB FTW68D0292Accident · No injuriesClosedMooney M20E · Tulsa, OKNTSB OAK68A0044Accident · No injuriesClosedHughes 269A · San Carlos, CANTSB LAX68D0244Accident · No injuriesClosedCessna 185 · Tucson, AZNTSB SEA68D0209Accident · No injuriesClosedCessna 172 · Wolf Point, MTNTSB FTW68F0333Accident · No injuriesClosedCessna 150 · Bethany, OKNTSB MKC68F0314Accident · No injuriesClosedPiper PA-28 · St.Peter, MNNTSB MIA68F0310Accident · No injuriesClosedBeech C-18S · W.Hollywood, FLNTSB CHI68A0043Accident · 1 fatalClosedBoeing 707 · Erlanger, KYNTSB ANC68F0067Accident · No injuriesClosedPiper PA-12 · Port Heiden, AKNTSB NYC68F0280Accident · Serious injuriesClosedCessna 150F · Plainville, CTNTSB MIA68A0045Accident · Serious injuriesClosedHughes 269B · Greenwood, SCNTSB MKC68F0313Accident · No injuriesClosedPiper PA-22 · St.Charles, MONTSB MIA68F0309Accident · No injuriesClosedPiper PA-30 · Chamblee, GANTSB FTW68F0327Accident · No injuriesClosedCessna 140 · Dallas, TXNTSB SEA68F0196Accident · No injuriesClosedLuscombe 8A · Renton, WANTSB MIA68D0304Accident · No injuriesClosedCessna 150 · Davie, FL