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 OAK76FVG94Accident · No injuriesClosedWeatherly 201B · Davis, CANTSB MIA76DKJ86Accident · No injuriesClosedBell 47D1 · Centre, ALNTSB LAX76AL090Accident · 1 fatalClosedChampion 7ECA · Black Canyon, AZNTSB CHI76FEV52Accident · Serious injuriesClosedHughes 369HS · Woodland, ILNTSB MKC76FCD58Accident · No injuriesClosedHughes 269C · Clutier, IANTSB FTW76DPG85Accident · No injuriesClosedAero Comdr 600S2R · Garland, ARNTSB CHI76FEI35Accident · No injuriesClosedCessna 188 · Wooster, OHNTSB SEA76FYA42Accident · Minor injuriesClosedPiper PA-25 · Parma, IDNTSB NYC76FHJ27Accident · Serious injuriesClosedLake LA-200 · Smithtown Bay, NYNTSB FTW76DQG83Accident · No injuriesClosedPiper PA-25 · Petersburg, TXNTSB SEA76DYA41Accident · No injuriesClosedPiper PA-25 · Fruitland, IDNTSB MKC76FCJ52Accident · Serious injuriesClosedCessna A188B · Harvard, NENTSB MIA76FKQ39|MIA76FK039Accident · No injuriesClosedCessna 188 · Shelby, MSNTSB MIA76DLG42Accident · No injuriesClosedCessna 188 · St Matthews, SCNTSB FTW76DQG82Accident · No injuriesClosedPiper PA-25 · Idalou, TXNTSB CHI76FEV49Accident · 1 fatalClosedPiper PA-25 · Cerro Gordo, ILNTSB OAK76DVD44Accident · Minor injuriesClosedBell 47G · Pittsburg, CANTSB FTW76DRA52Accident · Minor injuriesClosedSnow 600S2R · El Campo, TXNTSB LAX76AL088Accident · 1 fatalClosedChampion 7BCM · Wickenburg, AZNTSB NYC76FHM32Accident · Serious injuriesClosedBeech C35 · Marlboro, NJNTSB FTW76FRJ30Accident · Serious injuriesClosedPiper PA-25 · Gilbert, LANTSB FTW76DRG70Accident · No injuriesClosedBell 47G-2 · Mcallen, TXNTSB FTW76DPD51Accident · No injuriesClosedPiper PA-36 · Gilliland, TXNTSB MKC76DCJ50Accident · No injuriesClosedCessna A188B · York, NENTSB MIA76FLG41Accident · No injuriesClosedHughes 269B · Orangeburg, SCNTSB IAD76AI083Accident · 1 fatalClosedCessna U206 · Blackstone, VANTSB SEA76AS062Accident · 4 fatalClosedCessna 182H · Kalispell, MTNTSB MKC76FCA35Accident · Minor injuriesClosedBell 47G · Chesterfield, MONTSB IAD76DLT15Accident · No injuriesClosedPiper PA-36 · Memphis, TNNTSB FTW76DRG84Accident · Minor injuriesClosedCallair A-9B · Los Indios, TXNTSB FTW76FPG79Accident · No injuriesClosedGrumman G-164 · Stuttgart, ARNTSB FTW76DRG67Accident · No injuriesClosedBoeing B75N1 · Raymondville, TXNTSB FTW76AF108Accident · 1 fatalClosedCessna 150G · Aubrey, TXNTSB NYC76FNC56Accident · No injuriesClosedPiper J5A · Camden, MENTSB SEA76DYA39Accident · No injuriesClosedHughes 269A · Gooding, IDNTSB NYC76FNC55Accident · No injuriesClosedBoeing A75N1 · Belmont, MENTSB MKC76FTK31Accident · Serious injuriesClosedPiper J3C-65 · Onida, SDNTSB MIA76DKG86Accident · No injuriesClosedPiper PA-25 · Americus, GANTSB FTW76FPG82Accident · Serious injuriesClosedQuinn MK-5A · Corning, ARNTSB DEN76FTC39Accident · 1 fatalClosedSteen Sky Bolt · Riverton, WYNTSB NYC76AN110Accident · 1 fatalClosedPiper PA-22 · Harwinton, CTNTSB MIA76FKQ37Accident · No injuriesClosedCessna A188B · Hollandale, MSNTSB MIA76FKG85Accident · No injuriesClosedPiper PA-36 · Blakely, GANTSB FTW76DPG77Accident · No injuriesClosedPiper PA-25 · West Ridge, ARNTSB SEA76FYA35Accident · 1 fatalClosedAero Comdr A-9 · Nampa, IDNTSB OAK76DXQ56Accident · No injuriesClosedPiper PA-18 · Orovada, NVNTSB MKC76AK065Accident · 1 fatalClosedCessna 150 · Thief Rv Falls, MNNTSB DEN76DQG05Accident · Serious injuriesClosedPiper PA-25 · Lovington, NMNTSB SEA76DYA33Accident · Minor injuriesClosedCallair A-9 · Grandview, IDNTSB SEA76DTI29Accident · No injuriesClosedCallair A-9 · Pendroy, MT