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 MKC77FCG01Accident · No injuriesClosedCessna 205 · Point Lookout, MONTSB MIA77FL901Accident · 1 fatalClosedBensen B-8M · Laurens, SCNTSB NYC77DFA03Accident · No injuriesClosedPiper PA-25 · Ticonderoga, NYNTSB LAX77FA002Accident · 2 fatalClosedMooney M20C · Phoenix, AZNTSB FTW77DQG03Accident · Minor injuriesClosedSnow 600S2R · Snyder, TXNTSB SEA77DA001Accident · 1 fatalClosedAeronca 11AC · Medical Lake, WANTSB LAX77FUJ02Accident · 2 fatalClosedCessna A188A · Buckeye, AZNTSB MKC77DCA02Accident · Minor injuriesClosedGrumman G-164 · Hayti, MONTSB LAX77DVA02Accident · No injuriesClosedEL Tomcat MK5A · Wasco, CANTSB MIA77FLA01Accident · Serious injuriesClosedGrum Amer AA1-B · Lee, FLNTSB MIA77DKT01Accident · 1 fatalClosedBensen Gyro · Gulfstream, FLNTSB IAD76FLQ01Accident · No injuriesClosedGrumman G-164A · Elkton, KYNTSB CHI77FEK01Accident · No injuriesClosedBell 47D1 · Johnstown, OHNTSB LAX76FNK13Accident · 1 fatalClosedPitts Spcl SIS · Prescott, AZNTSB ANC76FAH78Accident · No injuriesClosedCessna U206 · Egegik, AKNTSB LAX76DUK12Accident · Minor injuriesClosedPiper PA-25 · Safford, AZNTSB LAX76DUK15Accident · No injuriesClosedCessna 188B · Quail Mesa, AZNTSB IAD76FID44Accident · 1 fatalClosedPitts Spcl S-1C · Weyers Cave, VANTSB GAF76AA138Accident · 4 fatalClosedCessna 172L · Beluga Mt, AKNTSB ANC76DAA65Accident · No injuriesClosedCessna 207 · Cir.Hot Spngs, AKNTSB MKC76FTG28Accident · Serious injuriesClosedChampion 7GCBC · Rhame, NDNTSB OAK76AP071Accident · 2 fatalClosedBellanca Bkcab · Las Vegas, NVNTSB DEN76DTC46Accident · No injuriesClosedCessna 182 · Big Piney, WYNTSB OAK76DVA91Accident · No injuriesClosedGrumman G-164A · Easton, CANTSB MKC76FCG98Accident · No injuriesClosedBell 47G-5 · King City, MONTSB CHI76FEK30Accident · No injuriesClosedTransworld 47G-2 · Leipsic, OHNTSB FTW76FPH14Accident · Serious injuriesClosedCessna 150 · Searcy, ARNTSB LAX76FUM31Accident · 1 fatalClosedAero Comdr A-9B · Imperial, CANTSB DEN76AD072Accident · 2 fatalClosedPiper PA-31 · Pinon, NMNTSB OAK76FVA92Accident · 1 fatalClosedBoeing A75 · Parlier, CANTSB FTW76DRJ48Accident · Minor injuriesClosedGrumman G-164A · Bonita, LANTSB IAD76FLJ28Accident · No injuriesClosedCessna A188B · Battleboro, NCNTSB SEA76DYG74Accident · No injuriesClosedBell 47G-3B · Cashmere, WANTSB SEA76AS077Accident · 2 fatalClosedCessna A185F · Geraldine, MTNTSB FTW76FRJ47Accident · No injuriesClosedGrumman G-164B · Crowville, LANTSB MIA76FKQ47Accident · 2 fatalClosedPiper PA-18 · Flora, MSNTSB IAD76DLQ35Accident · No injuriesClosedGrumman G-164 · Elkton, KYNTSB FTW76FQH08Accident · Serious injuriesClosedPiper PA-25 · Dimmitt, TXNTSB IAD76FIJ18Accident · No injuriesClosedCessna 180 · Daybrook, WVNTSB FTW76FPD57Accident · 1 fatalClosedBoeing B75N1 · Goldthwaite, TXNTSB ANC76AA129Accident · 1 fatalClosedCessna 150 · Sterling, AKNTSB OAK76FVM47Accident · No injuriesClosedHiller Acft UH-12E · Salinas, CANTSB MIA77FLA69Accident · No injuriesClosedCessna A188A · Cambellton, FLNTSB MIA76DKK02Accident · No injuriesClosedGrumman G-164A · Ashford, ALNTSB CHI76AC090Accident · 2 fatalClosedCessna 150M · Salem, ILNTSB MIA76DKK01Accident · No injuriesClosedCessna 188 · Huntsville, ALNTSB FTW76FRJ45Accident · 1 fatalClosedSnow 600S2R · Ferriday, LANTSB FTW76FRJ43Accident · Serious injuriesClosedCessna A188B · Monroe, LANTSB FTW76DPH10Accident · No injuriesClosedBoeing B75 · Dumas, ARNTSB MKC76FCD66Accident · Serious injuriesClosedAeronca 7AC · Prairieburg, IA