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 DEN75FQG07Accident · 1 fatalClosedPiper PA-25 · Clovis, NMNTSB CHI75FEV28Accident · No injuriesClosedPiper PA-25 · Blue Mound, ILNTSB FTW75FQG48Accident · Serious injuriesClosedPiper PA-25 · Black, TXNTSB OAK75FVG52Accident · No injuriesClosedBoeing A75N1 · Woodland, CANTSB MIA75DKT70Accident · No injuriesClosedBellanca 7ACA · Delray Beach, FLNTSB OAK75FVA50Accident · Serious injuriesClosedCessna 150L · Poplar, CANTSB OAK75FVA49Accident · Minor injuriesClosedCessna 210 · Riverdale, CANTSB MIA75FKG63Accident · No injuriesClosedGrumman G-164 · Smithville, GANTSB FTW75DRG64Accident · No injuriesClosedCessna 188 · Port Lavaca, TXNTSB FTW75FPG45Accident · Serious injuriesClosedPiper PA-18A · Pine Bluff, ARNTSB CHI75DEC42Accident · No injuriesClosedCessna 150 · Port Huron, MINTSB MKC75FCA22Accident · 1 fatalClosedGrumman G-164A · Laforge, MONTSB MIA75FKQ26Accident · 1 fatalClosedCessna A188B · Stewart, MSNTSB SEA75DYG25Accident · No injuriesClosedBell 206B · Prescott, WANTSB OAK75APO43Accident · 2 fatalClosedCessna A150L · Morgan Hill, CANTSB OAK75DVG48Accident · No injuriesClosedStearman A75N1 · Orland, CANTSB MIA75FLD59Accident · No injuriesClosedDixon PJ-260 · Venice, FLNTSB OAK75FVG46Accident · No injuriesClosedVertol 42A · Chico, CANTSB IAD75FHD33Accident · Serious injuriesClosedCessna 150L · Dagsboro, DENTSB SEA75DYG22Accident · No injuriesClosedCessna 172 · Rockford, WANTSB LAX75AL044Accident · 3 fatalClosedCessna 210B · Lk.Havasu Cty, AZNTSB NYC75FHJ28Accident · Serious injuriesClosedBell 47G-2A · New York, NYNTSB FTW75DQG43Accident · No injuriesClosedPiper PA-18A · Muleshoe, TXNTSB OAK75DVW13Accident · Minor injuriesClosedAlouette III · Furnace Creek, CANTSB MIA75AM063Accident · 4 fatalClosedCessna 172K · Miami, FLNTSB NYC75FFA29Accident · Serious injuriesClosedBellanca 7GCAA · Fort Ann, NYNTSB MIA75FKG59Accident · No injuriesClosedBushby MM1 · Thomasville, GANTSB LAX75DUM18Accident · Minor injuriesClosedGrumman G-164A · Holtville, CANTSB UNK75X0102Accident · 1 fatalClosedBell 47G4A · Ixiamas, St. BarthélemyNTSB OAK76DVA11Accident · No injuriesClosedTeenie TWO · Reedley, CANTSB MKC75FER51Accident · Serious injuriesClosedCessna 182 · Annandale, MNNTSB IAD75AI048Accident · 1 fatalClosedMonocoupe 90AF · Asheville, NCNTSB FTW75FPG33Accident · Serious injuriesClosedAeronca 7AC · Coy, ARNTSB MIA75AM055Accident · 1 fatalClosedN.American SNJ-5 · Zepherhills, FLNTSB SEA75AS030Accident · 1 fatalClosedBellanca 7KCAB · Hillsboro, ORNTSB MIA75FLD53Accident · No injuriesClosedCessna 172 · New Smyrna Bch, FLNTSB OAK75DJA07Accident · No injuriesClosedBell OH-13H · Honolulu, HINTSB ANC75DAG91Accident · No injuriesClosedCessna 172 · Anchorage, AKNTSB OAK75DVA43Accident · No injuriesClosedBoeing 75 · Dos Palos, CANTSB MIA75FKT48Accident · 1 fatalClosedAero Comdr 600S2R · Perring, FLNTSB FTW75FPD24Accident · 1 fatalClosedSnow S2C · Munday, TXNTSB MKC75DCQ30Accident · No injuriesClosedCessna 172 · Norton, KSNTSB MIA75DKT71Accident · Minor injuriesClosedCessna A150K · Delray Beach, FLNTSB LAX75FUQ21Accident · No injuriesClosedM-Saulnier MS894A · Inyokern, CANTSB FTW75FPD23Accident · No injuriesClosedBell 47G-5 · Fort Worth, TXNTSB DEN75DTE49Accident · Minor injuriesClosedAeronca 7AC · Ault, CONTSB MIA75DKT46Accident · No injuriesClosedBell 47G2 · Belle Glade, FLNTSB OAK75DVA38Accident · No injuriesClosedHiller Acft UH-12C · Kettlmn Cty, CANTSB IAD75AI038Accident · 2 fatalClosedBeech H18 · St Augustine, FLNTSB OAK75AP028Accident · 1 fatalClosedAmer Avco AA1-A · Newark, CA