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 CHI81FEI18Accident · No injuriesClosedGrumman G-164A · Vanlue, OHNTSB LAX81FA092Accident · 2 fatalClosedBeech 58 · Avalon, CANTSB FTW81FPG35Accident · 1 fatalClosedAyers S2R · West Bay, ARNTSB FTW81DPG34Accident · No injuriesClosedGrumman G-164B · Griffithville, ARNTSB ATL81FKQ11Accident · 1 fatalClosedAyres S2R · Hollandale, MSNTSB FTW81DRJ16Accident · No injuriesClosedGrumman G-164 · Jones, LANTSB FTW81DPG29Accident · No injuriesClosedAyers S2R · Stuttgart, ARNTSB DEN81FTI08Accident · Serious injuriesClosedCessna 188B · Turner, MTNTSB LAX81FJA10Accident · No injuriesClosedHiller Acft UH-12E · Lahaina, HINTSB FTW81DPG33Accident · Serious injuriesClosedAir Tractor AT-300 · Foreman, ARNTSB LAX81FVG39Accident · Minor injuriesClosedPiper PA-25 · Sacramento, CANTSB CHI81FA056Accident · 1 fatalClosedCessna 150H · Jasper, OHNTSB SEA81FYP18Accident · 1 fatalClosedGrumman G-164B · Harrison, IDNTSB FTW81FRA34Accident · 1 fatalClosedPitts S1S · Livingston, TXNTSB FTW81DPG37Accident · No injuriesClosedGrumman G-164B · Corning, ARNTSB FTW81DPG28Accident · No injuriesClosedGrumman G-164B · Lexa, ARNTSB MIA81DKT46Accident · Minor injuriesClosedCessna 152 · Key Biscayne, FLNTSB FTW81DPG27Accident · Minor injuriesClosedBell 47E · Fair Oaks, ARNTSB ATL81FA075Accident · 1 fatalClosedCessna 172 · Rocky Face, GANTSB MIA81FLD43Accident · No injuriesClosedCessna 152 · Clearwater, FLNTSB LAX81FA087Accident · 2 fatalClosedGrum Amer AA1B · Solana Beach, CANTSB MIA81FA073Accident · 1 fatalClosedCessna 182 · La Belle, FLNTSB LAX81DVA44Accident · No injuriesClosedCessna 188 · Merced, CANTSB SEA81DYP15Accident · Minor injuriesClosedCessna A188B · Washtucna, WANTSB LAX81FVA38Accident · Serious injuriesClosedBell 47G-2 · Orosi, CANTSB LAX81FVA40Accident · Minor injuriesClosedAero Comdr S2R · Mcfarland, CANTSB ANC81DAA13Accident · Serious injuriesClosedMaule M-5 · Totatlanika, AKNTSB LAX81DVG36Accident · No injuriesClosedGrumman G-164 · Durham, CANTSB DEN81DTI07Accident · No injuriesClosedAero Comdr A9B · Townsend, MTNTSB CHI81FA054Accident · 1 fatalClosedPiper PA-28 · Johnstown Ctr, WINTSB SEA81FA034Accident · 1 fatalClosedBeech 35 · Maple Valley, WANTSB MKC81FA033Accident · 2 fatalClosedPiper PA-28 · Ottumwa, IANTSB FTW81FQG26Accident · Serious injuriesClosedPiper PA-36 · Lazbuddie, TXNTSB FTW81DPG24Accident · No injuriesClosedGrumman G-164A · Trumann, ARNTSB ATL81FLQ16Accident · 1 fatalClosedBensen B8M · Smithland, KYNTSB ATL81DKQ08Accident · Minor injuriesClosedCessna A188B · Hollandale, MSNTSB FTW81FPA12Accident · Serious injuriesClosedCessna A188B · Celina, TXNTSB SEA81DYA09Accident · No injuriesClosedCessna 188 · Idaho Falls, IDNTSB LAX81FVG31Accident · No injuriesClosedRockwell S2R · Williams, CANTSB LAX81FVM21Accident · Serious injuriesClosedBell 47G-5A · Soledad, CANTSB ANC81FA058Accident · 1 fatalClosedBellanca 8GCBC · Palmer, AKNTSB FTW81FA084Accident · 2 fatalClosedCessna 152 · Jones, OKNTSB LAX81FUG25Accident · Serious injuriesClosedBell 47G-2 · Oasis, CANTSB DEN81FTI05Accident · 1 fatalClosedCessna 185F · Geraldine, MTNTSB MKC81DCQ33Accident · Serious injuriesClosedPiper PA-25 · Ingalls, KSNTSB LAX81FVG30Accident · 1 fatalClosedAyers S2R · Grimes, CANTSB LAX81FVA39Accident · Minor injuriesClosedAero Comdr S2R · Five Points, CANTSB MIA81FKT48Accident · Minor injuriesClosedPiper PA-36 · Immokalee, FLNTSB FTW81DRD22Accident · No injuriesClosedGrumman G-164B · Swords, LANTSB ATL81FLT07Accident · No injuriesClosedPiper PA-25 · Pickwick Dam, TN