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 SEA76FYC11Accident · 1 fatalClosedCallair A-9B · Pendleton, ORNTSB MIA76FLG09Accident · No injuriesClosedDehavilland DHC-1B · Columbia, SCNTSB FTW76FRA08Accident · Serious injuriesClosedGrumman G-164A · East Bernard, TXNTSB MIA76FKQ07Accident · Serious injuriesClosedBell 47G-2 · Itta Bena, MSNTSB CHI76FEM06Accident · Serious injuriesClosedPiper PA-12 · Midland, MINTSB MIA76FLG08Accident · No injuriesClosedAero Comdr 600S2R · Latta, SCNTSB SEA76DYC10Accident · No injuriesClosedCessna A188B · Jefferson, ORNTSB NYC76FFA07Accident · No injuriesClosedPiper PA-25 · Peterboro, NYNTSB MIA76FLG07Accident · No injuriesClosedBell 47G · Pinewood, SCNTSB MIA76FCQ09Accident · 1 fatalClosedPiper PA-18 · Tribune, KSNTSB FTW76FRD05Accident · No injuriesClosedGrumman G-164A · Erath, LANTSB FTW75FRG13Accident · Serious injuriesClosedBoeing B75N1 · Sebastian, TXNTSB FTW76DRJ04Accident · No injuriesClosedGrumman G-164A · Rayville, LANTSB FTW76DQG18Accident · No injuriesClosedCessna 188 · Tulia, TXNTSB CHI76DEP13Accident · Minor injuriesClosedStearman A75N1 · Portage, WINTSB MKC76FCJ10Accident · Serious injuriesClosedPiper PA-25 · Champion, NENTSB LAX76DUJ12Accident · Serious injuriesClosedBell 47G-5 · Chandler, AZNTSB LAX76DUJ10Accident · No injuriesClosedCessna 172F · Flagstaff, AZNTSB NYC76AN021Accident · 2 fatalClosedMaule ME4 · Hydetown, PANTSB MKC76DCG14Accident · No injuriesClosedCessna 177A · Cassville, MONTSB MIA76FLA03Accident · No injuriesClosedCessna 188A · Millers X-Road, FLNTSB IAD76FLJ05Accident · Serious injuriesClosedCallair A-9 · Kenansville, NCNTSB MKC76DCQ06Accident · Serious injuriesClosedCessna A188 · Natoma, KSNTSB LAX75FUQ06Accident · No injuriesClosedPiper PA-25 · Santa Maria, CANTSB FTW76FPD05Accident · No injuriesClosedCessna A188B · De Leon, TXNTSB MKC76FTK03Accident · Serious injuriesClosedLuscombe 8E · Watertown, SDNTSB FTW76FRD03Accident · Serious injuriesClosedCessna 180 · Golden Meadow, LANTSB MKC76DCQ03Accident · No injuriesClosedHughes 269C · Holcomb, KSNTSB NYC76AN019Accident · 1 fatalClosedN.American SNJ-3 · Wilmington, MANTSB MKC76DER15Accident · No injuriesClosedAeronca 7AC · St George, MNNTSB IAD76FLT01Accident · No injuriesClosedCessna 188 · Ripley, TNNTSB CHI76AC009Accident · 1 fatalClosedPitts S-1S · New Castle, INNTSB OAK76DVG13Accident · No injuriesClosedCessna A188B · Thornton, CANTSB LAX76DUJ04Accident · Minor injuriesClosedGrumman G-164A · Parker, AZNTSB FTW76DQG14Accident · Serious injuriesClosedPiper PA-25 · Briscoe, TXNTSB FTW76DPG10Accident · No injuriesClosedGrumman G-164 · Devalls Bluff, ARNTSB SEA76FYA09Accident · Serious injuriesClosedBoeing PT-17 · Idaho Falls, IDNTSB SEA76AS008Accident · 2 fatalClosedPiper J-3 · Quincy, WANTSB MKC76FCJ07Accident · No injuriesClosedCessna 188 · Auburn, NENTSB MKC76DCA04Accident · No injuriesClosedGrumman G-164 · Randlees, MONTSB MIA76DKJ07Accident · Minor injuriesClosedBellanca 8GCBC · Courtland, ALNTSB SEA76AS007Accident · 1 fatalClosedPiper PA-28 · Sheridan, ORNTSB MKC76DCJ06Accident · No injuriesClosedAero-Comdr A-9 · Palmer, NENTSB MIA76FKQ04Accident · Minor injuriesClosedCessna 150 · West Point, MSNTSB MIA76AM009Accident · 1 fatalClosedCessna 150L · Lake City, FLNTSB DEN76DTE09Accident · No injuriesClosedCessna 180 · Montrose, CONTSB FTW76FRG09Accident · 1 fatalClosedSnow S-2C · Donna, TXNTSB FTW76AF006Accident · 1 fatalClosedPiper PA-12 · Baytown, TXNTSB CHI76FER01Accident · Minor injuriesClosedPiper PA-25 · Balsam Lake, WINTSB MKC76DER12Accident · No injuriesClosedBrantley B-2 · Mankato, MN