NTSB investigations
18,850 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 MIA66F0193Accident · Minor injuriesClosedPiper J-3 · Elba, ALNTSB FTW66F0222Accident · Serious injuriesClosedPiper PA-25 · Jerome, ARNTSB FTW66F0221Accident · Serious injuriesClosedLuscombe 8A · Sherman, TXNTSB FTW66F0197Accident · Serious injuriesClosedPiper PA-18 · Keo, ARNTSB FTW66F0195Accident · Serious injuriesClosedPiper PA-18A · Franklin, LANTSB FTW66A0014Accident · 1 fatalClosedPiper PA-24 · Mcalmont, ARNTSB MKC66A0008Accident · 2 fatalClosedAeronca 7AC · Forest Alke, MNNTSB FTW66F0192Accident · Minor injuriesClosedPiper PA-18A · Waterproof, LANTSB ANC66F0076Accident · Serious injuriesClosedCessna/Wren 46OH · Soldotna, AKNTSB OAK66F0048Accident · No injuriesClosedBoeing A75 · Armona, CANTSB MIA66F0146Accident · Serious injuriesClosedPiper PA-25 · Bennettsville, SCNTSB DEN66F0092Accident · Minor injuriesClosedNaval Arcft N3N-3 · Casa Grande, AZNTSB MKC66F0151Accident · Serious injuriesClosedPiper J3C · Pukwana, SDNTSB MKC66F0137Accident · No injuriesClosedPiper PA-18A · Elm Creek, NENTSB MIA66F0181Accident · Serious injuriesClosedPiper PA-18 · Lenox, GANTSB DEN66A0005Accident · No injuriesClosedBell 47G3B1 · Grand Canyon, AZNTSB FTW66F0241Accident · Minor injuriesClosedPiper PA-25 · Fort Gibson, OKNTSB UNK65X1523Accident · Minor injuriesClosedPiper PA-18A · Gumberry, NCNTSB LAX66F0041Accident · Minor injuriesClosedNaval Arcft N3N · Brawley, CANTSB FTW66F0217Accident · Minor injuriesClosedPiper PA-25 · Panhandle, TXNTSB DEN66D0091Accident · Minor injuriesClosedCallair A-5 · Lovell, WYNTSB FTW66A0013Accident · 1 fatalClosedPiper PA-25 · La Villa, TXNTSB ANC66D0052Accident · No injuriesClosedPiper PA-18 · Eureka, AKNTSB SEA66F0088Accident · Serious injuriesClosedBoeing A75 · Othello, WANTSB MKC66F0165Accident · Minor injuriesClosedCallair 9A · Missouri Vly, MONTSB MIA66F0091Accident · No injuriesClosedBoeing A-75N1 · Avalon, MSNTSB MIA66F0071Accident · Minor injuriesClosedPiper J-3C · Stokesdale, NCNTSB MIA66F0176Accident · Minor injuriesClosedCallair A-9 · Sardis, ALNTSB LAX66A0013Accident · 1 fatalClosedCessna 175A · Shoshone, CANTSB DEN66A0014Accident · 1 fatalClosedPiper PA-18A · Holly, CONTSB CHI66F0133Accident · No injuriesClosedPiper PA-18A · Douglas, MINTSB ANC66A0002Accident · 1 fatalClosedPiper PA-18A · Palmer, AKNTSB MKC66F0170Accident · No injuriesClosedPiper PA-18 · Bathgate, NDNTSB MIA66A0017Accident · 1 fatalClosedPiper PA-18 · Gordon, ALNTSB ANC66F0013Accident · Serious injuriesClosedPiper PA18A · Nenana, AKNTSB NYC66A0014Accident · No injuriesClosedBell 47G2 · Hollywood, MDNTSB NYC66A0013Accident · No injuriesClosedBell 47D1 · West Kingston, RINTSB CHI66F0415Accident · Minor injuriesClosedBeechcraft 65 · Iron Mountain, MINTSB CHI66F0100Accident · No injuriesClosedPiper PA-25 · Melber, KYNTSB MKC66F0107Accident · No injuriesClosedPiper J-3 · Giltner, NENTSB FTW66F0161Accident · Minor injuriesClosedCallair A-9 · Summerfield, TXNTSB MKC66A0005Accident · No injuriesClosedBell 47G2 · Keystone, SDNTSB FTW66F0183Accident · 1 fatalClosedCurt Wright 4000 · Alamo, TXNTSB CHI66F0131Accident · No injuriesClosedCallair A-6 · Amboy, ILNTSB MKC66F0108Accident · No injuriesClosedPiper PA-25 · Hayes Center, NENTSB MIA66F0067Accident · Minor injuriesClosedPiper PA-25 · Burnt Corn, ALNTSB MIA66A0015Accident · No injuriesClosedHughes 269B · Cope, SCNTSB MIA66D0125Accident · No injuriesClosedAeronca 7AC · Athens, TNNTSB FTW66F0236Accident · Serious injuriesClosedBoeing B75 · Bosco, LANTSB LAX65F0093Accident · No injuriesClosedPiper PA-18 · Carson City, NV