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 MKC78DER39Accident · No injuriesClosedHiller UH-12E · Bemidji, MNNTSB LAX78DVA34Accident · No injuriesClosedAero Comdr S2R · Kettleman City, CANTSB LAX78DVM17Accident · No injuriesClosedBell 47G5 · Templeton, CANTSB SEA78DYM23Accident · No injuriesClosedBell 47G-2 · Goldendale, WANTSB FTW78FPD16Accident · Minor injuriesClosedErco 415-C · Margaret, TXNTSB FTW78FA040Accident · 1 fatalClosedCessna 182P · Ferriday, LANTSB CHI78FEV25Accident · 1 fatalClosedBell 47-G · Clinton, ILNTSB OAK78FVM16Accident · No injuriesClosedStearman B75N1 · Watsonville, CANTSB LAX78FUM17Accident · Minor injuriesClosedPiper PA-28 · San Diego, CANTSB FTW78DPG22Accident · No injuriesClosedGrumman G-164A · Trumann, ARNTSB UNK78X0113Accident · 5 fatalClosedNa Rockwell 560 · Nassau, Burkina FasoNTSB FTW78FPD14Accident · No injuriesClosedPiper PA-25 · Henrietta, TXNTSB MIA78FA057Accident · 1 fatalClosedCessna 337F · No Name Key, FLNTSB SEA78DYP25Accident · No injuriesClosedCessna 188 · Fairfield, WANTSB LAX78FUQ21Accident · Minor injuriesClosedBell 47G · Santa Ynez, CANTSB LAX78FA038Accident · 1 fatalClosedCessna 140 · Buckeye, AZNTSB FTW78FQG22Accident · 1 fatalClosedSnow S-2R · Friona, TXNTSB LAX78DUM16Accident · No injuriesClosedBell 47G2 · Oceanside, CANTSB LAX78DUJ39Accident · Minor injuriesClosedCessna XP172 · Cameron, AZNTSB MKC78DCJ14Accident · No injuriesClosedPiper PA-18 · Haigler, NENTSB SEA78FYE16Accident · No injuriesClosedHiller Acft UH-12E · Forks, WANTSB SEA78FA023Accident · 4 fatalClosedPiper PA-28 · Milton Frwtr, ORNTSB DEN78FTC17Accident · 1 fatalClosedCessna 172 · Alta, WYNTSB DEN78FQA15Accident · Serious injuriesClosedLuscombe 8A · Flora Vista, NMNTSB SEA78DYM21Accident · No injuriesClosedHughes 269C · The Dalles, ORNTSB DEN78FTE41Accident · No injuriesClosedHughes 500C · Lasalle, CONTSB LAX78FUQ18Accident · Serious injuriesClosedCessna A150J · Thousand Oaks, CANTSB FTW78FRJ11Accident · No injuriesClosedGrumman G-164A · Cloutierville, LANTSB MKC78FCJ13Accident · No injuriesClosedBell 47G5A · Kearney, NENTSB SEA78FYM19Accident · No injuriesClosedHiller Acft UH-12E · Tillamook, ORNTSB FTW78DRG27Accident · No injuriesClosedSnow S2R · Beeville, TXNTSB OAK78DVA30Accident · No injuriesClosedGrumman G164A · Ballico, CANTSB ANC78DAG30Accident · Serious injuriesClosedPiper PA-18 · Mccarthy, AKNTSB MIA78FA051Accident · 2 fatalClosedCessna 172M · Griffing, GANTSB OAK78DVA29Accident · No injuriesClosedBoeing A75 · Dos Palos, CANTSB CHI78FEG05Accident · Minor injuriesClosedCessna 150M · Oxford, OHNTSB DEN78DTE35Accident · Minor injuriesClosedCessna 172F · State Bridge, CONTSB OAK78FVD20Accident · No injuriesClosedPiper PA-25 · Cotati, CANTSB MIA78DLD24Accident · No injuriesClosedRockwell S2R · Fort Pierce, FLNTSB OAK78DVD19Accident · No injuriesClosedCessna 188B · Stockton, CANTSB SEA78FA020Accident · 7 fatalClosedPiper PA-32R · Oak Harbor, WANTSB FTW78FA029Accident · 4 fatalClosedCessna 172N · Lubbock, TXNTSB OAK78FVG21Accident · 1 fatalClosedBreezy Stokie · Lincoln, CANTSB LAX78FVA25Accident · No injuriesClosedBell 47G1 · Buttonwillow, CANTSB DEN78FTE30Accident · 1 fatalClosedCessna 150G · Ft Garland, CONTSB MIA78FA041Accident · 1 fatalClosedCessna 150F · Jefferson, GANTSB LAX78DUJ28Accident · No injuriesClosedGrumman G-164B · Coolidge, AZNTSB IAD78FIG05Accident · Serious injuriesClosedGrumman AA1-B · Salisbury, MDNTSB MIA78FLG08Accident · Minor injuriesClosedPitts S1-S · Spartanburg, SCNTSB MIA78FA040Accident · 2 fatalClosedBeech D18S · Clewiston, FL