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 SEA73FTI01Accident · Minor injuriesClosedBell 206A · Paradise, MTNTSB SEA73DYG09Accident · No injuriesClosedBell 47G3B2 · Molsen, WANTSB OAK73AP001Accident · 2 fatalClosedChampion 7KCAB · San Ramon, CANTSB SEA73DYG02Accident · No injuriesClosedBell 47G-2 · Twisp, WANTSB MIA73FLA06Accident · Minor injuriesClosedPiper J-3 · Pensacola, FLNTSB FTW73DPD01Accident · Serious injuriesClosedPiper PA-25 · Priddy, TXNTSB DEN73FTE02Accident · No injuriesClosedPiper PA-25 · Mead, CONTSB DEN73FTE01Accident · Serious injuriesClosedBoeing A75N1 · Idalia, CONTSB CHI73DEK02Accident · No injuriesClosedLuscombe 8A · Newark, OHNTSB MKC73AK003Accident · 2 fatalClosedN.American SNJ-4 · Thief Rvr Fl, MNNTSB MIA73DLG02Accident · No injuriesClosedBell 47D1 · Dalzell, NCNTSB OAK73FVW02Accident · 1 fatalClosedCessna 175C · Independnce, CANTSB NYC73AN003Accident · 1 fatalClosedErco 415-C · Mcdonald, PANTSB CHI73AC002Accident · 3 fatalClosedCessna 172K · Hales Corners, WINTSB FTW73FRA03Accident · 1 fatalClosedPiper PA-25 · Caldwell, TXNTSB DEN73AD001Accident · 1 fatalClosedTaylorcraft BC12-D · Lovington, NMNTSB CHI73FEV01Accident · No injuriesClosedPiper PA-28 · Oakwood, ILNTSB OAK73FVA01Accident · Serious injuriesClosedAero Comdr A-9B · Five Points, CANTSB FTW73DPG01Accident · No injuriesClosedGrumman G-164 · Mayflower, ARNTSB SEA72DYA43Accident · Minor injuriesClosedAero Comdr 600S2R · Ontario, ORNTSB OAK72FVA88Accident · No injuriesClosedGrumman G-164A · Caruthers, CANTSB OAK72DVA91Accident · No injuriesClosedBell 47G3B1 · Springville, CANTSB MKC72FTG25Accident · Serious injuriesClosedChampion 7GCBC · Maddock, NDNTSB MIA72DLT16Accident · Minor injuriesClosedPiper PA-25 · Trimble, TNNTSB FTW72DRA64Accident · No injuriesClosedCessna 188 · Wharton, TXNTSB CHI72FEE87Accident · Minor injuriesClosedGrumman G64A · Stillman Vly, ILNTSB MIA72DKH21Accident · Minor injuriesClosedCessna A188 · Shellman, GANTSB SEA72FYC49Accident · Serious injuriesClosedCallair A-9 · Harrisburg, ORNTSB MIA72AM141Accident · 1 fatalClosedCessna 172B · Santee, SCNTSB FTW72DRJ31Accident · Serious injuriesClosedPiper PA-25 · Ferriday, LANTSB OAK72DVA82Accident · No injuriesClosedCessna A188 · Merced, CANTSB MKC72FTG24Accident · No injuriesClosedPiper PA-28 · Lisbon, NDNTSB MKC72FTG23Accident · No injuriesClosedBoeing A75N1 · Argusville, NDNTSB SEA72DYA40Accident · Minor injuriesClosedPiper PA-25 · Ontario, ORNTSB ANC72AA049Accident · No injuriesClosedHiller Acft FH1100 · Big Delta, AKNTSB OAK72FVM01Accident · No injuriesClosedStinson L-5 · San Jose, CANTSB ANC72DAH17Accident · No injuriesClosedChampion 7EC · Chugiak, AKNTSB MIA72FLD73Accident · Serious injuriesClosedCallair A-9B · Sebring, FLNTSB MIA72FKH17Accident · Serious injuriesClosedCallair A-9 · Unadilla, GANTSB MIA72DLT14Accident · No injuriesClosedCessna 188A · Olive Branch, MSNTSB CHI72FEM75Accident · Minor injuriesClosedCessna 150E · Crystal, MINTSB LAX72FVA78Accident · 1 fatalClosedBoeing A75N1 · Bakersfield, CANTSB FTW72DRG98Accident · No injuriesClosedPiper PA-25 · Santa Rosa, TXNTSB CHI72FEE82Accident · 1 fatalClosedLowers Bird · Crystal Lake, ILNTSB SEA72FYI23Accident · Serious injuriesClosedBoeing A75N1 · Lakeview, ORNTSB MKC72FCA29Accident · Minor injuriesClosedPiper PA-24 · Tyrone, MONTSB FTW72FPG85Accident · No injuriesClosedGrumman G-164A · Jerome, ARNTSB FTW72DQG46Accident · No injuriesClosedCessna A188 · Hart, TXNTSB OAK72DVD57Accident · No injuriesClosedBell 47G2 · Stockton, CANTSB SEA72FYC47Accident · 1 fatalClosedBoeing A75 · Salem, OR