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 MIA78FA116Accident · 2 fatalClosedPiper J3C · Homestead, FLNTSB LAX78FUA26Accident · Minor injuriesClosedCessna 150F · Fullerton, CANTSB FTW78FPG78Accident · 1 fatalClosedPiper PA-25 · Sherrill, ARNTSB UNK78X0132Accident · 1 fatalClosedBell 205A · Dennison, CanadaNTSB OAK78FVM42Accident · No injuriesClosedGreat Lakes 2T-1A · Santa Cruz, CANTSB OAK78FA043Accident · 1 fatalClosedBellanca 8KCAB · Caruthers, CANTSB LAX78FUM34Accident · No injuriesClosedBell 206B · Holtville, CANTSB CHI78FEV49Accident · No injuriesClosedBell OH-13H · Wellington, ILNTSB MKC78FCD44Accident · Serious injuriesClosedAeronca 7BCM · Toledo, IANTSB MIA78FLG33Accident · No injuriesClosedGrumman G-164B · Little Rock, SCNTSB FTW78DPG77Accident · No injuriesClosedPiper PA-25 · Augusta, ARNTSB OAK78FVD52Accident · No injuriesClosedRockwell A-9B · Stockton, CANTSB NYC78FNA43Accident · Minor injuriesClosedSikorsky S-55 · Carver, MANTSB MIA78DKJ74Accident · Serious injuriesClosedPiper PA-25 · Jay, FLNTSB IAD78FHD22Accident · Minor injuriesClosedBellanca 7ECA · Selbyville, DENTSB FTW78DRJ28Accident · Minor injuriesClosedCessna 188 · Fondale, LANTSB OAK78FVM41Accident · No injuriesClosedBell 47-G2 · Soledad, CANTSB MKC78FCJ39Accident · Serious injuriesClosedPiper PA-25 · Eustis, NENTSB MKC78FA064Accident · 1 fatalClosedGreat Lakes 2T-1A · Mason City, IANTSB MKC78DCD43Accident · Minor injuriesClosedPiper PA-36 · Irving, IANTSB MIA79FLA34Accident · 1 fatalClosedBell 47G2 · Omega, GANTSB FTW78DPG75Accident · No injuriesClosedGrumman G-164A · Crawfordsville, ARNTSB MKC78DCA45Accident · No injuriesClosedPiper PA-25 · Naylor, MONTSB ANC78DAG96Accident · No injuriesClosedCessna 170A · Talkeetna, AKNTSB LAX78DUM33Accident · Minor injuriesClosedRockwell SR-2 · El Centro, CANTSB SEA78FYP48Accident · No injuriesClosedWeatherly 201C · Wilbur, WANTSB OAK78DVA71Accident · No injuriesClosedAero Comdr S-2R · Five Points, CANTSB MKC78DA061Accident · No injuriesClosedSikorsky S-64 · Buffalo, MNNTSB IAD78FA089Accident · 3 fatalClosedMooney M20J · Bakersville, NCNTSB SEA78DYP46Accident · No injuriesClosedCessna 188 · Connell, WANTSB MKC78DCJ37Accident · Minor injuriesClosedAero Comdr A-9B · Agnew, NENTSB SEA78DYA23Accident · No injuriesClosedEnstrom 280C · Buhl, IDNTSB OAK78DVM37Accident · Minor injuriesClosedBell H-13B · Salinas, CANTSB FTW78FPM23Accident · No injuriesClosedCessna 150L · Pawhuska, OKNTSB MIA78FKJ70Accident · Minor injuriesClosedGrumman G-164A · Prattville, ALNTSB MIA78DKQ36Accident · No injuriesClosedPiper PA-18 · Mt.Olive, MSNTSB DEN78FTC34Accident · No injuriesClosedHughes 269C · Douglas, WYNTSB OAK78DVA70Accident · No injuriesClosedRockwell S2R · Kettleman City, CANTSB CHI78FEC45Accident · Serious injuriesClosedGrum Amer AA1-B · Milford, MINTSB MKC78DCA43Accident · No injuriesClosedPiper PA-36 · Wyconda, MONTSB FTW78FRJ26Accident · 1 fatalClosedPiper PA-25 · Tallulah, LANTSB CHI78DET31Accident · Minor injuriesClosedBell 47G2 · Petroleum, INNTSB CHI78FEI33Accident · Minor injuriesClosedCessna 210 · Brimfield, OHNTSB OAK78FVA67Accident · Serious injuriesClosedCessna A188 · Chowchilla, CANTSB MIA78FKJ72Accident · Minor injuriesClosedPiper PA-25 · Dothan, ALNTSB FTW78DRG62Accident · No injuriesClosedAir Tractor 301 · Rio Hondo, TXNTSB NYC78FFJ32Accident · No injuriesClosedGrumman G-164A · Huron, NYNTSB MIA78FKQ27Accident · No injuriesClosedAyres S2R · Rome, MSNTSB OAK78FVM35Accident · No injuriesClosedBeech C23 · Soledad, CANTSB MIA78FKG67Accident · Serious injuriesClosedHughes 269C · Buena Vista, GA