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 FTW72FRD15Accident · Serious injuriesClosedBell 206A · Morgan City, LANTSB FTW72FPA08Accident · 1 fatalClosedCallair A-6 · Donie, TXNTSB MIA72FKQ25Accident · No injuriesClosedPiper PA-23 · Sledge, MSNTSB FTW72FRA16Accident · Serious injuriesClosedCessna 150H · Addicks, TXNTSB LAX72DUQ38Accident · Minor injuriesClosedMoth Acft 60GM · 1 000 Oaks, CANTSB MIA72FKT22Accident · No injuriesClosedBell 47D-1 · South Bay, FLNTSB NYC72FLJ13Accident · 1 fatalClosedBuecker 133 · Greenville, NCNTSB FTW72DQD12Accident · No injuriesClosedBoeing B75N1 · Pecos, TXNTSB FTW72DPG47Accident · No injuriesClosedPiper PA-25 · Joiner, ARNTSB MIA72DLT09Accident · Minor injuriesClosedAero Comdr A9B · Buena Vista, TNNTSB CHI72AC038Accident · 1 fatalClosedCessna 150H · Aberdeen, OHNTSB LAX72FVA29Accident · 1 fatalClosedAero Comdr A-9B · Avenal, CANTSB ANC72FAG61Accident · Serious injuriesClosedSikorsky S-58T · Anchorage, AKNTSB FTW72AF019Accident · 2 fatalClosedTaylorcraft BC12-D · Carmen, OKNTSB CHI72AC037Accident · 2 fatalClosedAeronca 7AC · South Lyon, MINTSB LAX72FUJ50Accident · 1 fatalClosedPiper PA-25 · Wellton, AZNTSB SEA72AS015Accident · 1 fatalClosedChampion 7KCAB · Roche Harbor, WANTSB OAK72AP011Accident · 2 fatalClosedMooney M20C · Klamath, CANTSB FTW72DPG45Accident · Minor injuriesClosedGrumman G-164 · Trumann, ARNTSB SEA72DYE16Accident · No injuriesClosedBell 47G2 · Clallam Bay, WANTSB OAK72FVA27Accident · Serious injuriesClosedPiper PA-25 · Chowchilla, CANTSB CHI72FEG19Accident · Minor injuriesClosedTaylorcraft BC-65 · Troy, OHNTSB OAK72DVD17Accident · Serious injuriesClosedGlobe GC-1B · Newark, CANTSB MKC72FCD35Accident · Serious injuriesClosedLuscombe 8E · Osage, IANTSB MKC72FCA10Accident · No injuriesClosedAero Comdr A-9B · Clarkton, MONTSB NYC72FNE13Accident · Minor injuriesClosedPiper J3C-65 · Durham, CTNTSB DEN72AD017Accident · 1 fatalClosedBeech P35 · Luna, NMNTSB FTW72DPG43Accident · No injuriesClosedPiper PA-25 · Osceola, ARNTSB SEA72DYG13Accident · No injuriesClosedAero Comdr 600S24 · Pasco, WANTSB MIA72DKJ23Accident · No injuriesClosedBoeing A75 · Magnolia Spgs, FLNTSB FTW72FRG27Accident · 1 fatalClosedCessna 188 · Laredo, TXNTSB SEA72DYI09Accident · Minor injuriesClosedStearman PT-17 · Glide, ORNTSB NYC72FID14Accident · Serious injuriesClosedAero Comdr A-9B · Melfa, VANTSB NYC72FID13Accident · 1 fatalClosedBell 47D-1 · Millers Tavern, VANTSB LAX72DUJ46Accident · No injuriesClosedNaval Fcty N3N-1 · Gadsden, AZNTSB FTW72DPD18Accident · No injuriesClosedHiller UH12C · Grandview, TXNTSB MIA72FKQ24Accident · Serious injuriesClosedPiper PA-25 · Vaiden, MSNTSB FTW72FPD14Accident · No injuriesClosedPiper PA-25 · Gorman, TXNTSB MKC72FER20Accident · No injuriesClosedPiper PA-28 · Duluth, MNNTSB FTW72FPG42Accident · 1 fatalClosedPiper PA-25 · Mccrory, ARNTSB MKC72DCQ26Accident · No injuriesClosedPiper PA-25 · Richfield, KSNTSB SEA72FYG11Accident · 1 fatalClosedCessna 188 · Craigmont, IDNTSB OAK72FVD11Accident · No injuriesClosedBell 47G3B · Brentwood, CANTSB MIA72FKG38Accident · No injuriesClosedPiper J-3 · Hiram, GANTSB MIA72FLT08Accident · No injuriesClosedPiper PA-18 · Ramer, TNNTSB MIA72DKQ20Accident · No injuriesClosedBoeing E75 · Grenada, MSNTSB FTW72FRJ07Accident · No injuriesClosedAero Comdr A-9B · Ferriday, LANTSB MKC72FTK07Accident · Serious injuriesClosedPiper PA-18 · Philip, SDNTSB MKC72FTG09Accident · 1 fatalClosedAeronca 7AC · Alamo, NDNTSB MIA72FKG36Accident · Minor injuriesClosedCessna 170B · Palmetto, GA