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 DEN79DQD03Accident · Minor injuriesClosedHiller UH-12D · Tularosa, NMNTSB SEA79FYM21Accident · Serious injuriesClosedBeech A45 · Goldendale, WANTSB MIA79FA057Accident · 1 fatalClosedPiper PA-28 · Camden, SCNTSB SEA79FA025Accident · 2 fatalClosedTaylorcraft BC-65 · Orting, WANTSB LAX79FA034Accident · 3 fatalClosedBeech D-35 · Los Angeles, CANTSB FTW79FA064Accident · 1 fatalClosedPiper PA-22 · Gladewater, TXNTSB OAK79FVA21Accident · 1 fatalClosedPiper PA-36 · Los Banos, CANTSB OAK79DVG22Accident · No injuriesClosedGrumman G-164A · Rumsey, CANTSB FTW79FA066Accident · 1 fatalClosedCessna 182Q · Granite, OKNTSB DEN79FTM12Accident · No injuriesClosedPiper PA-28 · Delta, UTNTSB OAK79DVA20Accident · No injuriesClosedRockwell S2R · Coaliga, CANTSB MIA79FKT55Accident · No injuriesClosedCessna 310I · Palm Island, FLNTSB IAD79FA038Accident · 1 fatalClosedBellanca 8KCAB · Queenstown, MDNTSB OAK79DVA19Accident · No injuriesClosedCessna A188B · Dinuba, CANTSB LAX79DUG20Accident · Serious injuriesClosedAero Comdr A-9B · Hemet, CANTSB OAK79FVD12Accident · Serious injuriesClosedBoeing A-75 · Manteca, CANTSB MIA79FA055Accident · 1 fatalClosedCessna 150 · Albany, GANTSB MKC79FCD1ZAccident · No injuriesClosedBeech C-23 · Manchester, IANTSB OAK79FVD11Accident · No injuriesClosedHiller UH-12B · Brentwood, CANTSB LAX79DVA17Accident · No injuriesClosedRockwell S2R · Taft, CANTSB IAD79FKW06Accident · 2 fatalClosedCessna 150F · Bristol, TNNTSB SEA79DYE14Accident · No injuriesClosedErco 415-C · Auburn, WANTSB LAX79FA030Accident · 4 fatalClosedMooney M-20E · Boron, CANTSB FTW79DRG18Accident · No injuriesClosedCessna 150J · Blanco, TXNTSB FTW79FPD08Accident · Serious injuriesClosedCessna 172 · Fort Worth, TXNTSB DEN79FA021Accident · 4 fatalClosedMooney M20E · Littleton, CONTSB CHI79DEE36Accident · No injuriesClosedCessna 172 · Sublette, ILNTSB LAX79FA028Accident · 1 fatalClosedCessna A150L · Fillmore, CANTSB LAX79FUJ43Accident · Serious injuriesClosedPiper PA-32 · Morman Lake, AZNTSB MIA79FLG18Accident · Serious injuriesClosedCessna 152 · Folly Beach, SCNTSB MIA79DKT41Accident · No injuriesClosedPiper PA-25 · Miami, FLNTSB FTW79FPD06Accident · Serious injuriesClosedCessna 150 · Denton, TXNTSB OAK79FVM08Accident · 1 fatalClosedStarduster 1 · Santa Cruz, CANTSB IAD79FA027Accident · 2 fatalClosedChampion 7KCAB · Fredricksburg, VANTSB DEN79FA012Accident · 1 fatalClosedCessna 172A · Park Valley, UTNTSB LAX79DUM04Accident · Serious injuriesClosedPiper PA-25 · Westmoreland, CANTSB LAX79FUJ24Accident · Serious injuriesClosedBell 206 · Phoenix, AZNTSB MIA79FLD24Accident · No injuriesClosedSikorsky S-55B · Haines, FLNTSB MIA79FKJ15Accident · 1 fatalClosedPitts S-1 · Panama City, FLNTSB FTW79FA025Accident · 1 fatalClosedBeechcraft N35 · Sinton, TXNTSB DEN79FTC05Accident · 1 fatalClosedCessna 172 · Rawlings, WYNTSB SEA79DYM09Accident · No injuriesClosedHiller Acft Soloy · Toledo, ORNTSB DEN79FTE12Accident · No injuriesClosedAero Comm 680F · Lajunta, CONTSB OAK79DVA11Accident · No injuriesClosedHiller UH-12E · Ivanhoe, CANTSB OAK79DVM07Accident · Minor injuriesClosedBell 47G2 · Castroville, CANTSB MIA79FLG07Accident · Minor injuriesClosedHughes 269B · Camden, SCNTSB NYC79FHD06Accident · Serious injuriesClosedLake LA-4 · North Beach, NJNTSB MIA79FLG06Accident · 1 fatalClosedFly Baby 1A · Moncks Corner, SCNTSB SEA79DTI04Accident · No injuriesClosedPiper PA-18 · Geraldine, MTNTSB OAK79DXQ04Accident · No injuriesClosedPiper PA-22 · Blue Canyon, CA