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 ANC78DAA08Accident · Serious injuriesClosedPiper PA-18 · Fairbanks, AKNTSB SEA78FYE10Accident · No injuriesClosedHughes 269B · Taholah, WANTSB CHI78DET12Accident · Minor injuriesClosedPiper PA-18A · Three Oaks, MINTSB SEA78DYE08Accident · No injuriesClosedHiller Acft UH-12D · Quillayute, WANTSB SEA78FYE06Accident · No injuriesClosedS.N.I.A.S. SA3180 · Clearwater, WANTSB CHI78FEP13Accident · No injuriesClosedCessna 150-J · Necedha, WINTSB IAD78FKW04Accident · Serious injuriesClosedPiper PA-28 · Benton, TNNTSB OAK78DVM10Accident · Serious injuriesClosedCessna 188 · Castroville, CANTSB FTW78DPD12Accident · No injuriesClosedPiper PA-25 · Wichita Falls, TXNTSB MKC78FCJ08Accident · 3 fatalClosedCessna 177 · Hayes Center, NENTSB CHI78FEM08Accident · 1 fatalClosedCessna 150 · Millersburg, MINTSB SEA78FYK07Accident · 1 fatalClosedPiper PA-25 · Christmas Vly, ORNTSB DEN78FTE23Accident · Serious injuriesClosedBellanca 7GCBC · Mcclave, CONTSB LAX78DUM13Accident · No injuriesClosedAir Tractor AT-301 · Imperial, CANTSB FTW78FQG13Accident · Serious injuriesClosedCessna 188B · Dalhart, TXNTSB IAD78FA031Accident · 2 fatalClosedBell 47J · Chesapeake, VANTSB IAD78DLQ06Accident · No injuriesClosedSikorsky S58F · Harold, KYNTSB OAK78DJA02Accident · No injuriesClosedEmair MA-1 · Lihue, HINTSB MKC78FCG12Accident · 1 fatalClosedCessna 177B · Grain Valley, MONTSB MIA78FA024Accident · 4 fatalClosedBeech A24 · Alachua, FLNTSB SEA78DYK04Accident · Minor injuriesClosedHiller Acft FH1100 · Walton, ORNTSB MIA78DKT21Accident · No injuriesClosedGrumman G-164B · Clewiston, FLNTSB DEN78FA013Accident · 3 fatalClosedCessna 182 · Socorro, NMNTSB SEA78DYK03Accident · Serious injuriesClosedHiller Acft UH12E · Port Orford, ORNTSB OAK78FA007Accident · 1 fatalClosedBellanca 7KCAB · Clearlake Oaks, CANTSB NYC78FA012Accident · 2 fatalClosedTaylorcraft BC12-D · Mercer, MENTSB LAX78FUA07Accident · Serious injuriesClosedAeronca 7AC · Sunset Beach, CANTSB MKC78FA008Accident · 2 fatalClosedBellanca 8KCAB · Inwood, IANTSB LAX78FUA05Accident · Minor injuriesClosedMooney M20C · Huntington Bch, CANTSB FTW78FPJ08Accident · Minor injuriesClosedPiper PA-22 · Victory, OKNTSB MIA78DLA07Accident · Minor injuriesClosedCessna 150 · Whigham, GANTSB LAX78QUM05Accident · Minor injuriesClosedCallair A9 · Calexico, CANTSB DEN78DTC05Accident · No injuriesClosedHughes 269A · Rawlins, WYNTSB LAX78FA008Accident · 2 fatalClosedBell 47J-2 · Burbank, CANTSB MIA78FA014Accident · 2 fatalClosedCessna 150M · Richland, FLNTSB ANC78FAD01Accident · 1 fatalClosedCessna 150 · Goddard, AKNTSB DEN78FTE12Accident · Serious injuriesClosedLuscombe 8E · Woodland Park, CONTSB SEA78FYM07Accident · Minor injuriesClosedHiller Acft UH-12E · Amity, ORNTSB FTW78DRD07Accident · Minor injuriesClosedCessna A188B · Le Blance, LANTSB SEA78FYM06Accident · Serious injuriesClosedHiller Acft UH-12E · Depoe Bay, ORNTSB LAX78DUG05Accident · No injuriesClosedPiper PA-25 · Blythe, CANTSB FTW78FRG10Accident · Serious injuriesClosedPiper PA-25 · Laredo, TXNTSB MIA78FKJ06Accident · No injuriesClosedAero Comdr S2R · Jay, FLNTSB IAD78FA009Accident · 1 fatalClosedCessna 150L · Ash, NCNTSB ANC77DAH50Accident · No injuriesClosedCessna 180 · Thompson Pass, AKNTSB FTW78FPJ06Accident · Serious injuriesClosedCessna 172 · Nobel, OKNTSB FTW78FA008Accident · 1 fatalClosedSchweizer 1-26B · Cedar Hill, TXNTSB MIA78FKQ03Accident · 1 fatalClosedThrush S2R · Poplarville, MSNTSB FTW78FPJ04Accident · 1 fatalClosedPiper PA-36 · Garber, OKNTSB FTW78FA007Accident · 1 fatalClosedEsteen Skyblt · Albany, TX