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 MKC72FTG07Accident · No injuriesClosedCallair A-9 · Mekinock, NDNTSB FTW72FPA02Accident · No injuriesClosedTraver Spcl PAC · Corsicana, TXNTSB SEA72FTA02Accident · No injuriesClosedCallair A-9 · Laurel, MTNTSB MKC72FCQ10Accident · No injuriesClosedBoeing A75N1 · Abilene, KSNTSB MKC72DCD12Accident · No injuriesClosedPiper PA-25 · Oelwein, IANTSB FTW72FRA01Accident · No injuriesClosedGrumman G-164A · Hamshire, TXNTSB LAX72DVA03Accident · Minor injuriesClosedCallair A-9 · Shafter, CANTSB MKC72DCQ08Accident · No injuriesClosedPiper PA-25 · Sharon Sprgs, KSNTSB FTW72DQG04Accident · No injuriesClosedCessna 188 · Friona, TXNTSB LAX72FUJ15Accident · No injuriesClosedHughes 369HS · Grnd Canyon, AZNTSB SEA72DYG03Accident · No injuriesClosedHughes 269B · Pullman, WANTSB SEA72FYG01Accident · 1 fatalClosedSnow S2R · Royal City, WANTSB OAK72DVD04Accident · No injuriesClosedRotorways Scorpi · Santa Rosa, CANTSB MIA72DKG05Accident · No injuriesClosedCassutt II · Milledgeville, GANTSB FTW72FQG06Accident · Serious injuriesClosedPiper PA-25 · Lockney, TXNTSB FTW72DPG03Accident · Serious injuriesClosedPiper PA-25 · Lake Village, ARNTSB OAK72DVD01Accident · Minor injuriesClosedCessna 150 · San Frncsco, CANTSB CHI72DEP02Accident · No injuriesClosedBoeing B75N1 · Blck Rvr Flls, WINTSB ANC72DAG31Accident · Minor injuriesClosedMaule M4210C · Soldotna, AKNTSB OAK72FVG03Accident · No injuriesClosedBoeing A75N1 · Sacramento, CANTSB MKC72DTK01Accident · No injuriesClosedPiper PA-18 · Hayes, SDNTSB MKC72DCQ06Accident · No injuriesClosedPiper PA-25 · Marion, KSNTSB MIA72FKJ02Accident · No injuriesClosedBoeing E75N1 · Echo, ALNTSB CHI72FEM03Accident · Serious injuriesClosedPiper PA-25 · Orleans, MINTSB FTW72FRG04Accident · Serious injuriesClosedPiper PA-32 · El Indio, TXNTSB FTW72DRG06Accident · No injuriesClosedAero Comdr S-2R · Harlingen, TXNTSB FTW72AF002Accident · 1 fatalClosedAeronca 7AC · Big Spring, TXNTSB CHI72FEI02Accident · Serious injuriesClosedCessna 150K · Brunswick, OHNTSB FTW72FQG05Accident · No injuriesClosedPiper PA-25 · Plainview, TXNTSB ANC72DAG07Accident · Serious injuriesClosedCessna 140 · Mckinley Prk, AKNTSB SEA72AS001Accident · 2 fatalClosedTaylorcraft BC12-D · Riverside, WANTSB NYC72AN001Accident · 3 fatalClosedPiper PA-22 · Machias, NYNTSB LAX72DUJ02Accident · No injuriesClosedBell 204B · Heber, AZNTSB CHI72AC002Accident · 1 fatalClosedRyan ST-3KR · Valmeyer, ILNTSB OAK72DVG01Accident · No injuriesClosedBoeing A75N1 · Meridian, CANTSB OAK72DVA01Accident · No injuriesClosedBoeing A75 · Mendota, CANTSB FTW72FRG01Accident · 1 fatalClosedPiper PA-25 · St Paul, TXNTSB MKC72FTG01Accident · No injuriesClosedCessna 188 · Grafton, NDNTSB MIA72FKJ01Accident · No injuriesClosedGrumman G-164 · Dothan, ALNTSB OAK71FVG89Accident · No injuriesClosedPiper PA-25 · Dixon, CANTSB OAK71DVA93Accident · No injuriesClosedBoeing E75 · Five Points, CANTSB MKC72FCQ11Accident · Serious injuriesClosedPiper PA-18 · Rolla, KSNTSB MKC71FTG36Accident · No injuriesClosedCallair A-9 · Reeder, NDNTSB MKC71DCJ77Accident · Minor injuriesClosedPiper PA-25 · Alma, NENTSB OAK71FVG88Accident · 1 fatalClosedHagel SA-100 · Folsom, CANTSB MKC71FCA41Accident · Minor injuriesClosedBoeing A75N1 · Dexter, MONTSB CHI71FEV50Accident · Serious injuriesClosedChampion 7KCAB · Aledo, ILNTSB SEA71DYG61Accident · No injuriesClosedTaylorcraft BC12-D · Priest Lake, IDNTSB NYC71DHD58Accident · Minor injuriesClosedPiper J-3 · Mickleton, NJNTSB ANC71AA061Accident · Serious injuriesClosedPiper PA-12 · Aniak, AK