NTSB investigations
18,850 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 NYC71DFG10Accident · No injuriesClosedCessna 140 · Pelham, NHNTSB FTW71AF039Accident · 1 fatalClosedAeronca L-3 · Chelsea, OKNTSB MIA71FKT33Accident · Minor injuriesClosedPiper PA-18 · Hollywood, FLNTSB OAK71FJA08Accident · No injuriesClosedMurrayair MA-1 · Waipahu, HINTSB OAK71DVG46Accident · Minor injuriesClosedCessna 120 · Auburn, CANTSB MIA71DKT71Accident · Minor injuriesClosedCessna 150 · Ft Myers, FLNTSB IAD71FIA14Accident · Serious injuriesClosedSud Aviatio SE3130 · Alexandria, VANTSB OAK71FVD24Accident · Serious injuriesClosedAeronca 11-BC · Ripon, CANTSB LAX71DUM24Accident · No injuriesClosedPiper PA-25 · Imperial, CANTSB IAD71AI031Accident · 1 fatalClosedBeech A-23 · Chadbourn, NCNTSB MIA71DKQ22Accident · Serious injuriesClosedPiper PA-22 · Coldwater, MSNTSB SEA71DVQ16Accident · No injuriesClosedBell 47G-2 · Sixes, ORNTSB FTW71DQG50Accident · No injuriesClosedCessna 150 · Amarillo, TXNTSB IAD71FIG27Accident · Minor injuriesClosedLuscombe 8A · Laytonsville, MDNTSB MIA71FLA29Accident · 2 fatalClosedTaylorcraft BC12-D · Micanopy, FLNTSB OAK71DVA46Accident · No injuriesClosedHiller Acft UH-12C · Fresno, CANTSB CHI71FBJ45Accident · Minor injuriesClosedPiper PA-25 · Bangor, MINTSB LAX71AL036Accident · 2 fatalClosedSchweizer SGS232 · Elsinore, CANTSB LAX71DVA42Accident · No injuriesClosedAeronca 11AC · Lone Pine, CANTSB DEN71AD025Accident · 2 fatalClosedPiper PA-18 · Montrose, CONTSB MIA71FKT25Accident · No injuriesClosedSnow S2A · Clewiston, FLNTSB FTW71AF027Accident · Minor injuriesClosedBell 47J · Abbeville, LANTSB UNK71X0102Accident · No injuriesClosedBell 47G-3B · Hatia Is Est Pkst, PakistanNTSB CHI71FBJ38Accident · Minor injuriesClosedHughes 269A · No.Muskegon, MINTSB LAX71DUQ39Accident · No injuriesClosedGrumman G-164 · Somis, CANTSB FTW71FQG44Accident · Serious injuriesClosedTaylorcraft DC-65 · Loop, TXNTSB ANC71DAG47Accident · Minor injuriesClosedPiper PA-18 · Talkeetna, AKNTSB NYC71AN056Accident · 2 fatalClosedCessna 150H · Bahama, NCNTSB LAX71AL027Accident · 2 fatalClosedFairchild 22 · Upland, CANTSB MIA71DKQ19Accident · Minor injuriesClosedPiper J-3 · Batesville, MSNTSB FTW71FRA25Accident · No injuriesClosedCessna 150J · Beaumont, TXNTSB SEA71DXM15Accident · Minor injuriesClosedCessna 172H · Twin Falls, IDNTSB MIA71DKT13Accident · No injuriesClosedPiper J-3 · Homestead, FLNTSB MIA71DKJ26Accident · Minor injuriesClosedCessna 182H · Gulf Shores, ALNTSB LAX71FUJ40Accident · Serious injuriesClosedBell 47G-5 · El Mirage, AZNTSB FTW71FPG26Accident · No injuriesClosedGrumman G-164A · Lonoke, ARNTSB MIA71FKQ18Accident · Minor injuriesClosedPiper PA-25 · Vicksburg, MSNTSB IAD71FIG17Accident · Minor injuriesClosedTaylorcraft BC-65 · Fort Ashby, WVNTSB DEN71FXD32Accident · Serious injuriesClosedCessna 150F · Watkins, CONTSB DEN71AD017Accident · 2 fatalClosedBeech V35B · Aspen, CONTSB SEA71AS022Accident · 2 fatalClosedCessna A150K · Eagle, IDNTSB SEA71FWD18Accident · No injuriesClosedAeronca 7AC · Fircrest, WANTSB MIA71DLD24Accident · No injuriesClosedSikorsky S-55 · Dundee, FLNTSB FTW71AF017Accident · 2 fatalClosedCessna 120 · Whitney, TXNTSB MIA71FKJ24Accident · No injuriesClosedPiper PA-18 · Loxley, ALNTSB OAK71DVA34Accident · Minor injuriesClosedAero Comdr A-9B · Dos Palos, CANTSB MKC71FDM30Accident · Minor injuriesClosedCessna 172G · Hastings, MNNTSB FTW71FQG41Accident · Serious injuriesClosedPiper PA-25 · Cotton Center, TXNTSB OAK71DVA33Accident · Minor injuriesClosedBoeing B75N1 · Orange Cove, CANTSB OAK71AP018Accident · 2 fatalClosedBoeing A75N1 · Castro Valley, CA