NTSB investigations
18,851 cases where the phase of flight was Maneuvering.
Cases, newest first
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 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 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 FTW76DPG07Accident · No injuriesClosedGrumman G-164A · Wynne, ARNTSB CHI76AC004Accident · 1 fatalClosedCessna 337 · St Johns, MINTSB SEA76DTI03Accident · Minor injuriesClosedPiper PA-25 · Big Sandy, MTNTSB MKC76DCJ09Accident · No injuriesClosedPiper PA-25 · Minden, NENTSB FTW76FPD03Accident · No injuriesClosedGrumman G-164 · Deleon, TXNTSB CHI76FEC01Accident · No injuriesClosedHughes 269B · Flint, MINTSB SEA76FYA06Accident · 1 fatalClosedPiper PA-25 · Fruitland, IDNTSB OAK76FVG10Accident · 1 fatalClosedCessna A188B · Vacaville, CANTSB MKC76FER11Accident · Serious injuriesClosedCessna 188 · Maynard, MNNTSB NYC76FHM04Accident · Serious injuriesClosedPiper PA-25 · Pine Island, NYNTSB FTW76FPG06Accident · No injuriesClosedPiper PA-36 · Wheatly, ARNTSB CHI76DEP06Accident · No injuriesClosedStearman A75N1 · Alma Center, WINTSB NYC76DHJ01Accident · No injuriesClosedBell 47G-2 · Orient Point, NYNTSB CHI76FEM03Accident · No injuriesClosedGrumman G-164A · Hudsonville, MINTSB MKC76FCJ04Accident · No injuriesClosedPiper PA-18 · Hebron, NENTSB MKC76DTG04Accident · Minor injuriesClosedCessna 150 · Walhalla, NDNTSB FTW76AF005Accident · 4 fatalClosedPiper PA-28 · Morgan, TXNTSB CHI76DEV03Accident · No injuriesClosedPiper PA-25 · Sheldon, ILNTSB CHI76FEI04Accident · No injuriesClosedBell 47G-2 · Celeryville, OHNTSB CHI76AC003Accident · 4 fatalClosedGrum Amer AA-5 · Hammond, WINTSB MKC76FER09Accident · No injuriesClosedPiper PA-25 · Olivia, MNNTSB FTW76DRA05Accident · No injuriesClosedGrumman G-164 · El Campo, TXNTSB FTW76FRA04Accident · Serious injuriesClosedCessna A188-A · Pierce, TXNTSB FTW76FPM04Accident · 1 fatalClosedCessna 210L · Nowata, OKNTSB DEN76FQA03Accident · No injuriesClosedPiper PA-25 · Roswell, NMNTSB DEN76DTE06Accident · No injuriesClosedCessna A188 · Center, CONTSB FTW76DQG04Accident · No injuriesClosedPiper PA-25 · Plainview, TXNTSB CHI76DEP03Accident · No injuriesClosedPiper PA-25 · Bancroft, WINTSB MKC76FCJ03Accident · Minor injuriesClosedPiper PA-25 · Waco, NENTSB NYC76FNE01Accident · Minor injuriesClosedPiper J-3 · Canaan, CTNTSB DEN76DQD01Accident · No injuriesClosedAero Comdr 600S2R · Las Cruces, NMNTSB MKC76DCJ02Accident · Minor injuriesClosedPiper PA-25 · Bushnell, NENTSB FTW76FQG09Accident · No injuriesClosedGrumman G-164A · Muleshoe, TXNTSB CHI76FEV02Accident · No injuriesClosedBell 47G · Forsyth, ILNTSB OAK76DVA03Accident · No injuriesClosedPiper PA-25 · Corcoran, CANTSB OAK76AP001|OAK7LAP001Accident · 2 fatalClosedWeatherly 201B · Tracy, CANTSB DEN7LFTE07Accident · 1 fatalClosedPiper PA-18 · Rifle, CONTSB MKC76DTG03Accident · No injuriesClosedPiper PA-25 · Mohall, NDNTSB MKC76AK007Accident · 1 fatalClosedCessna 150F · Plankinton, SDNTSB CHI76AC002Accident · 1 fatalClosedPiper PA-28 · Buena Vista, OHNTSB MKC76DTG02Accident · Minor injuriesClosedPiper PA-25 · Rhame, NDNTSB FTW76FQG03Accident · No injuriesClosedPiper PA-25 · Petersburg, TXNTSB DEN76DTE02Accident · No injuriesClosedCallair A-9B · Craig, CONTSB FTW76DPG03Accident · No injuriesClosedGrumman G-164A · Dumas, ARNTSB OAK75DVG05Accident · Minor injuriesClosedPiper J-3 · Colusa, CANTSB MIA76FLD03Accident · Serious injuriesClosedCessna 172K · Venus, FLNTSB MKC76AK004Accident · 4 fatalClosedBeech 35 · Bismarck, NDNTSB LAX76FUG01Accident · Minor injuriesClosedTaylorcraft BC12-D · Rialto, CANTSB LAX75AUG03Accident · Minor injuriesClosedAeronca 7GCBC · Barstow, CANTSB MKC76FCJ01Accident · 1 fatalClosedPiper PA-25 · O Neill, NE