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 LAX81FUG23Accident · 1 fatalClosedAcroduster SA-700 · Adelanto, CANTSB FTW81DRG31Accident · Minor injuriesClosedPiper PA-18 · Spicewood, TXNTSB FTW81FA078Accident · 2 fatalClosedRyan PT-22 · Fulshear, TXNTSB CHI81FEV14Accident · Serious injuriesClosedBell 47G-2 · Breese, ILNTSB NYC81DHA09Accident · Minor injuriesClosedSikorsky S-55B · Stillwater, NJNTSB ANC81DA046Accident · Minor injuriesClosedBell 206B · Red Mountain, AKNTSB ATL81FIJ05Accident · Serious injuriesClosedBell 47G · Sharples, WVNTSB MIA81FA066Accident · 2 fatalClosedBellanca 7GCBC · St Augustine, FLNTSB LAX81DUJ50Accident · No injuriesClosedHiller UH12E · Litchfield Pk, AZNTSB DEN81FTM18Accident · Minor injuriesClosedCessna R182 · Eureka, UTNTSB SEA81FYP13Accident · No injuriesClosedBoeing A75N1 · Mansfield, WANTSB MKC81FCQ27Accident · Serious injuriesClosedCessna 188B · Roxbury, KSNTSB LAX81FUG24Accident · No injuriesClosedCessna 421 · Yuma, AZNTSB CHI81FA046Accident · 2 fatalClosedBellanca 7KCAB · Lafayette, INNTSB CHI81FA045Accident · 3 fatalClosedCessna 172N · Atlas, ILNTSB ATL81FA063Accident · 1 fatalClosedGrumman AA-5 · No.Sandbridge, VANTSB MKC81FCA09Accident · No injuriesClosedCessna 152 · Warrenton, MONTSB MKC81FA029Accident · Serious injuriesClosedPitts S-1S · Goddard, KSNTSB LAX81FUA06Accident · No injuriesClosedRobinson R-22 · Long Beach, CANTSB FTW81DPJ14Accident · No injuriesClosedBoeing A75 · Covington, OKNTSB ATL81FLT06Accident · No injuriesClosedGrumman G-164B · Brownsville, TNNTSB MIA81FKT40Accident · Serious injuriesClosedChampion 7ECA · Marathon, FLNTSB SEA81FYP12Accident · No injuriesClosedBell 47G-2 · Union Gap, WANTSB CHI81FA041Accident · 1 fatalClosedBellanca 8KCAB · Maria Stein, OHNTSB LAX81FUJ45Accident · Serious injuriesClosedCessna A188 · San Manuel, AZNTSB FTW81DPD17Accident · Minor injuriesClosedGrumman G-164A · Granbury, TXNTSB MIA81FKT37Accident · 2 fatalClosedRockwell S-2R · Florida City, FLNTSB MIA81FA059Accident · 2 fatalClosedCessna 337G · Vero Beach, FLNTSB FTW81FPJ12Accident · Serious injuriesClosedCessna 188 · Blackwell, OKNTSB FTW81FPM09Accident · Minor injuriesClosedCessna 152 · Cleveland, OKNTSB LAX81FA067Accident · 1 fatalClosedCessna 340 · Santa Maria, CANTSB DEN81FA024Accident · 2 fatalClosedCessna 172M · Kiowa, CONTSB LAX81FA065Accident · 1 fatalClosedLuscombe 8A · Ocotillo Wells, CANTSB FTW81DPD14Accident · No injuriesClosedBoeing A75HI · Justin, TXNTSB LAX81DVM17Accident · No injuriesClosedBell 47G · Pescadero, CANTSB ANC81FA030Accident · 1 fatalClosedTaylorcraft F-19 · Susitna Lake, AKNTSB ATL81FA056Accident · 1 fatalClosedCessna 182 · Raeford, NCNTSB DEN81FA021Accident · 2 fatalClosedTavlorcraft BC-12D · Stevensville, MTNTSB MKC81FA025Accident · 1 fatalClosedTony Duci RV-3 · Kennett, MONTSB LAX81FVA28Accident · No injuriesClosedHiller Acft UH12E · Huron, CANTSB LAX81DVA27Accident · No injuriesClosedHughes 369D · Madera, CANTSB CHI81FA033Accident · 1 fatalClosedCessna 172M · Quincy, ILNTSB SEA81FYM21Accident · Serious injuriesClosedCallair A-9 · Pendleton, ORNTSB LAX81DXQ13Accident · No injuriesClosedBell 206B · Lee Vining, CANTSB ATL81FKQ05Accident · Minor injuriesClosedCessna 150 · Poplarville, MSNTSB LAX81DVG22Accident · Minor injuriesClosedCessna T188C · Sherman Isl, CANTSB MIA81FLD27Accident · Serious injuriesClosedPiper PA-18 · Ft Pierce, FLNTSB SEA81FYP07Accident · Serious injuriesClosedPiper PA-25 · Colville, WANTSB NYC81DFJ06Accident · Minor injuriesClosedHiller UH-12B · Jamestown, NYNTSB FTW81DRG20Accident · No injuriesClosedCessna 172 · Austin, TX