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 NYC81FGT06Accident · No injuriesClosedBell 47G · Shrewsbury, PANTSB LAX81DVA51Accident · No injuriesClosedHiller Acft UH-12E · Delano, CANTSB ATL81FLA08Accident · 1 fatalClosedCallair A-9A · Blakely, GANTSB MKC81DCJ18Accident · Minor injuriesClosedHughes 269C · Union, NENTSB DEN81FTM32Accident · Minor injuriesClosedCessna A188B · Layton, UTNTSB SEA81DYP24Accident · Serious injuriesClosedAero Comdr S2R · Wallula, WANTSB DEN81FTG12Accident · 1 fatalClosedBellanca 8GCBC · Rugby, NDNTSB DEN81FA044Accident · 2 fatalClosedCessna 172 · Price, UTNTSB SEA81DYM29Accident · No injuriesClosedPiper PA-25 · La Grande, ORNTSB MKC81DCJ20Accident · No injuriesClosedGrumman G-164B · Ravenna, NENTSB FTW81FRG50Accident · No injuriesClosedAero Comdr S2R · Mcallen, TXNTSB MKC81FCJ16Accident · 1 fatalClosedPiper PA-25 · Beatrice, NENTSB FTW81DPG47Accident · No injuriesClosedRockwell S2R · Dumas, ARNTSB LAX82FVA47Accident · Serious injuriesClosedGrumman G-164A · Pixley, CANTSB CHI81FEV21Accident · 1 fatalClosedTexas Hel OH-13H · Danville, ILNTSB LAX81DVM24Accident · No injuriesClosedHiller Acft UH-12E · Shandon, CANTSB LAX81FVG42Accident · 2 fatalClosedG.B.Assoc GB-1 · Pope Valley, CANTSB FTW81FA106Accident · 3 fatalClosedBellanca 7ECA · Anahuac, TXNTSB DEN81FTA08Accident · No injuriesClosedCessna 188A · Lavina, MTNTSB FTW81FPG45Accident · 1 fatalClosedGrumman G-164A · Lonoke, ARNTSB FTW81DQG37Accident · Minor injuriesClosedPiper PA-25 · Big Spring, TXNTSB DEN81FTA09Accident · No injuriesClosedCessna 188 · Flaxville, MTNTSB SEA81DYP21Accident · Serious injuriesClosedBell 47G3B2 · Walla Walla, WANTSB LAX81DUJ66Accident · No injuriesClosedBell 206B · Kayenta, AZNTSB FTW81FRD19Accident · 1 fatalClosedPitts S1C · Leroy, LANTSB SEA81DYA11Accident · No injuriesClosedGrumman G-164 · Monteview, IDNTSB FTW81DRA40Accident · No injuriesClosedCessna A188B · Louise, TXNTSB FTW81DPG42Accident · No injuriesClosedGrumman G-164A · Wilson, ARNTSB ATL81FLT10Accident · 1 fatalClosedPitts S1S · Savannah, TNNTSB MKC81FA039Accident · 1 fatalClosedCessna 182 · New Virginia, IANTSB FTW81FPG40Accident · No injuriesClosedGrumman G-164B · Wynne, ARNTSB CHI81FEX15Accident · Serious injuriesClosedSmith Mini DSA-1 · Kokomo, INNTSB MKC81FCJ15Accident · 1 fatalClosedCessna 188 · Firth, NENTSB DEN81FTG11Accident · 1 fatalClosedPiper PA-18A · Sterling, NDNTSB CHI81FER42Accident · No injuriesClosedCallair A-9B · Hector, MNNTSB LAX81FVG41Accident · No injuriesClosedGrumman G-164 · Davis, CANTSB DEN81FA039Accident · 1 fatalClosedBellanca 8KCAB · Langdon, NDNTSB FTW81FRD28Accident · No injuriesClosedGrumman G-164A · Morse, LANTSB ATL81DKG21Accident · No injuriesClosedPiper PA-25 · Vidalia, GANTSB FTW81FA100Accident · 1 fatalClosedPiper PA-18 · Uvalde, TXNTSB CHI81FER41Accident · No injuriesClosedCessna A188B · Villard, MNNTSB FTW81DRJ17Accident · No injuriesClosedAyers S2R · Jonesville, LANTSB DEN81DTI10Accident · No injuriesClosedHiller Acft UH-12E · Ulm, MTNTSB MKC81DCQ36Accident · No injuriesClosedCessna A188-B · Murdock, KSNTSB LAX81FA095Accident · 2 fatalClosedPiper PA-18 · Holtville, CANTSB FTW81FPD26Accident · 1 fatalClosedEaa Biplane BR-1 · Brownwood, TXNTSB CHI81FER39Accident · Serious injuriesClosedPiper PA-25 · Lake Elmo, MNNTSB CHI81FA061Accident · 1 fatalClosedBeech T-34B · New Castle, INNTSB CHI81FEC26Accident · Serious injuriesClosedPiper PA-28 · Bad Axe, MINTSB SEA81FYM25Accident · No injuriesClosedHiller Acft UH-12E · Milton-Freewtr, OR