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 DEN80FTG09Accident · Minor injuriesClosedPiper PA-25 · Davenport, NDNTSB CHI80FA041Accident · 4 fatalClosedCessna 172K · Big Fork, MNNTSB ATL80FKQ03Accident · No injuriesClosedGrumman G-164A · Clarksdale, MSNTSB FTW80FPG29Accident · 1 fatalClosedGrumman G-164B · Minturn, ARNTSB FTW80DPG25Accident · No injuriesClosedAero Comdr S2R · Ethel, ARNTSB ATL80FLA04Accident · Serious injuriesClosedCessna 150 · Thomasville, GANTSB FTW80DPG23Accident · No injuriesClosedGrumman G-164A · Gerrard, ARNTSB CHI80FEM25Accident · 1 fatalClosedChampion 7KCAB · Grant, MINTSB SEA80FA029Accident · 1 fatalClosedGrumman G-164B · Cle Elum, WANTSB FTW80FQA28Accident · No injuriesClosedBell 206B · Albuquerque, NMNTSB CHI80FA039Accident · 2 fatalClosedGrumman AA-1 · Sylvania, OHNTSB FTW80FA076Accident · 4 fatalClosedCessna 172M · Beasley, TXNTSB FTW80FRA31Accident · 1 fatalClosedCessna A188B · El Campo, TXNTSB LAX80FUJ58Accident · No injuriesClosedCessna 177 · Bouse, AZNTSB SEA80FYM33Accident · No injuriesClosedCessna A188A · Gresham, ORNTSB MKC80FA035Accident · Serious injuriesClosedHiller Acft UH-12D · Kansas City, MONTSB CHI80FEX17Accident · 1 fatalClosedGR Lakes X2T-1T · Lizton, INNTSB MKC80DCA15Accident · No injuriesClosedAir Tractor AT-301 · Lilbourn, MONTSB MKC80FA034Accident · 1 fatalClosedPitts S2S · Olathe, KSNTSB FTW80FA071Accident · 4 fatalClosedCessna 182G · Pecos, TXNTSB FTW80FPD28Accident · No injuriesClosedAero-Comdr S-2R · Grandbury, TXNTSB FTW80DRA26Accident · No injuriesClosedGrumman G-164A · La Ward, TXNTSB ATL80FKQ01Accident · Serious injuriesClosedCessna 150 · Prentiss, MSNTSB FTW80DRD28Accident · No injuriesClosedGrumman G-164A · Deweyville, TXNTSB LAX80FUJ53Accident · 1 fatalClosedRyan ST-3KR · Scottsdale, AZNTSB IAD80FA044Accident · 2 fatalClosedCessna 172 · Bethany, WVNTSB FTW80FPJ16Accident · No injuriesClosedBrantly B-2 · Frederick, OKNTSB ATL80FLT07Accident · No injuriesClosedHughes 269C · Martin, TNNTSB LAX80DVA35Accident · No injuriesClosedAero Comdr S-2R · Bakersfield, CANTSB FTW80FPJ14Accident · No injuriesClosedCessna 188 · Olustee, OKNTSB SEA80FYP20Accident · 1 fatalClosedPage RV-3 · Prosser, WANTSB NYC80FFA14Accident · Serious injuriesClosedCessna 152 · Cadyville, NYNTSB MKC80FER37Accident · Serious injuriesClosedFly Baby BWM-10 · Waubun, MNNTSB MKC80DCG21Accident · No injuriesClosedAero Comndr A9B · Savannah, MONTSB MKC80FCQ13Accident · Serious injuriesClosedCessna A188B · Winfield, KSNTSB LAX80DUJ50Accident · Minor injuriesClosedCessna A188B · Sun City, AZNTSB IAD80DKW13Accident · Serious injuriesClosedCallair A9 · Centerville, TNNTSB FTW80FRG38Accident · Serious injuriesClosedCessna 150 · Dilley, TXNTSB FTW80FRD24Accident · 2 fatalClosedChampion 7GCAA · Maurice, LANTSB LAX80FUJ48Accident · No injuriesClosedErco 415-C · Tonopah, AZNTSB CHI80FEV22Accident · Minor injuriesClosedHughes 369HS · Grayville, ILNTSB SEA80FTA09Accident · Minor injuriesClosedPiper PA-18 · Winifred, MTNTSB LAX80FVG27Accident · No injuriesClosedCessna 172F · Lake Berryessa, CANTSB FTW80FA065Accident · 2 fatalClosedCessna 150L · Pottsboro, TXNTSB SEA80DYE28Accident · Minor injuriesClosedCessna 172 · Concrete, WANTSB FTW80FA062Accident · 1 fatalClosedPiper PA-28 · Wagoner, OKNTSB DEN80FTC12Accident · Minor injuriesClosedHughes 369D · Chugwater, WYNTSB FTW80FA061Accident · 1 fatalClosedCessna 152 · Keller, TXNTSB MKC80DCQ11Accident · No injuriesClosedGrumman G-164C · Strauss, KSNTSB IAD80FID12Accident · Serious injuriesClosedPiper PA-18 · Syringa, VA