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 SEA81DYA24Accident · No injuriesClosedGrumman G-164 · Rigby, IDNTSB SEA81FYA23Accident · No injuriesClosedPiper PA-25 · Caldwell, IDNTSB CHI81FER61Accident · Serious injuriesClosedPiper PA-25 · Fairmont, MNNTSB MKC81FCD33Accident · No injuriesClosedPiper PA-25 · Clear Lake, IANTSB FTW81FPA15Accident · Minor injuriesClosedBellanca 7KCAB · Bonham, TXNTSB DEN81FTK22Accident · No injuriesClosedPiper PA-18 · Stratford, SDNTSB ATL81DLA13Accident · No injuriesClosedHughes 269A-1 · Sale City, GANTSB ANC81DAD05Accident · No injuriesClosedHughes 369D · Swan Lake, AKNTSB NYC81FHD34Accident · Minor injuriesClosedCessna T188C · Woodstown, NJNTSB FTW81DRJ29Accident · No injuriesClosedGrumman G-164 · Bastrop, LANTSB DEN81DTK21Accident · No injuriesClosedGrumman G-164C · Platte, SDNTSB FTW81FPG60Accident · 1 fatalClosedPiper J3C-65 · Almyra, ARNTSB LAX81DVD39Accident · Serious injuriesClosedGrumman G-164B · Tracy, CANTSB DEN81FTK20Accident · Minor injuriesClosedGrumman G-164B · Platte, SDNTSB CHI81FER58Accident · No injuriesClosedPiper PA-25 · Blue Earth, MNNTSB ATL81FKG42Accident · No injuriesClosedPiper PA-25 · Cochran, GANTSB ANC81FA095Accident · 6 fatalClosedPiper PA-32 · Skagway, AKNTSB ATL81FKG40Accident · Minor injuriesClosedGrumman G-164 · Hazlehurst, GANTSB SEA81FA051Accident · 2 fatalClosedRyan Acft ST-3KR · Shelton, WANTSB FTW81FQG47Accident · Serious injuriesClosedPiper PA-25 · Brownfield, TXNTSB SEA81FA050Accident · 2 fatalClosedSikorsky S-58B · Bellevue, WANTSB FTW81DRJ28Accident · No injuriesClosedCessna A188B · Bastrop, LANTSB FTW81DRD39Accident · No injuriesClosedGrumman G-164B · Mowata, LANTSB ATL81FKG41Accident · Minor injuriesClosedCessna A188B · Sylvania, GANTSB LAX81FUJ84Accident · Minor injuriesClosedSikorsky H19-D · Parker, AZNTSB ATL81DKQ25Accident · No injuriesClosedGrumman G-164 · Rochdale, MSNTSB MKC81DCJ25Accident · Serious injuriesClosedGrumman G-164B · Ewing, NENTSB LAX81DUG45Accident · No injuriesClosedAir Tractor AT-301 · Blythe, CANTSB CHI81FA084Accident · 1 fatalClosedPiper PA-28 · Millbury, OHNTSB ANC81FA092Accident · 1 fatalClosedPiper PA-18 · Kokiak, AKNTSB SEA81FYP31Accident · No injuriesClosedBoeing A75N1 · Wenatchee, WANTSB ATL81FKJ27Accident · No injuriesClosedAyres S2R · Ft Mitchel, ALNTSB NYC81FNC17Accident · Minor injuriesClosedAeronca 7BCM · Dexter, MENTSB LAX81FVD37Accident · 1 fatalClosedMdgt Mustng MM-1 · Little River, CANTSB DEN81FA055Accident · 3 fatalClosedPiper PA-28 · Kalispell, MTNTSB MKC81DCJ23Accident · Minor injuriesClosedTexas Hel OH-13 · Kearney, NENTSB MKC81DA047Accident · 1 fatalClosedPitts S-1 · Dodge City, KSNTSB FTW81DRD36Accident · No injuriesClosedBoeing A75-N1 · Plaquemine, LANTSB MKC81FA046Accident · 1 fatalClosedBensen B-8M · Columbia, MONTSB LAX81DVA56Accident · Minor injuriesClosedPiper PA-36 · Mcfarland, CANTSB FTW81DQG44Accident · No injuriesClosedAero Comdr S2R · Hitchland, TXNTSB FTW81DPM17Accident · Minor injuriesClosedPiper PA-38 · Sand Springs, OKNTSB DEN81FTA12Accident · 1 fatalClosedAero Comdr A-9B · Park City, MTNTSB LAX81DUJ90Accident · No injuriesClosedGrumman G-164A · Elroy, AZNTSB ATL81FKQ24Accident · 1 fatalClosedPiper PA-25 · Bentonia, MSNTSB ATL81DLJ15Accident · No injuriesClosedCessna 188 · Newton Grove, NCNTSB LAX81FA111Accident · 1 fatalClosedSchleicher ASW-19 · California Cty, CANTSB DEN81FTG15Accident · Serious injuriesClosedBoeing B75N1 · Northwood, NDNTSB DEN81DTG16Accident · No injuriesClosedPiper PA-36 · Jessie, NDNTSB ATL81FKQ21Accident · No injuriesClosedCessna A188B · Hazlehurst, MS