NTSB investigations
18,850 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 IAD71DID09Accident · Serious injuriesClosedChampion 7GCBC · Lynchburg, VANTSB FTW71DPG25Accident · No injuriesClosedPiper PA-25 · Eudora, ARNTSB FTW71DQD10Accident · Minor injuriesClosedCessna A188 · Presidio, TXNTSB DEN71FXD27Accident · Serious injuriesClosedPiper PA-25 · Fruita, CONTSB MIA71FKQ15Accident · 1 fatalClosedPiper PA-25 · Carpenter, MSNTSB LAX71DUJ34Accident · No injuriesClosedPiper PA-25 · Rillito, AZNTSB FTW71DQG39Accident · No injuriesClosedBoeing A75N1 · Bovina, TXNTSB CHI71FB707Accident · Serious injuriesClosedPiper PA-28 · Decatur, INNTSB FTW71DRJ18Accident · Serious injuriesClosedPiper PA-25 · Wisner, LANTSB OAK71FXQ17Accident · Serious injuriesClosedPitts S-1-S · Sparks, NVNTSB MIA71FKQ12Accident · No injuriesClosedPiper PA-25 · Inverness, MSNTSB LAX71DUJ31Accident · Minor injuriesClosedPiper PA-25 · Poston, AZNTSB FTW71FQD09Accident · No injuriesClosedPiper PA-25 · Balmorhea, TXNTSB MIA71FLD16Accident · No injuriesClosedBoeing A75N1 · Ocala, FLNTSB SEA71FWG17Accident · Minor injuriesClosedBell 47G-2 · Wenatchee, WANTSB FTW71FRJ16Accident · No injuriesClosedBoeing A75L3 · Gilliam, LANTSB SEA71FWD14Accident · Serious injuriesClosedAeronca 7AC · Oak Harbor, WANTSB FTW71FRJ17Accident · 1 fatalClosedPiper PA-18 · Alexandria, LANTSB MIA71DKG37Accident · Serious injuriesClosedCessna 188 · Vidalia, GANTSB ANC71FAA20Accident · Minor injuriesClosedChampion 7GCBC · Fairbanks, AKNTSB MIA71FLD14Accident · Minor injuriesClosedAero Comdr A-9B · Ruskin, FLNTSB IAD71FID07Accident · 1 fatalClosedPiper PA-18 · Virginia Beach, VANTSB FTW71FPG19Accident · Serious injuriesClosedPiper PA-18 · Walnut Corner, ARNTSB FTW71FPG17Accident · No injuriesClosedGrumman G-164 · Gould, ARNTSB DEN71FXT07Accident · No injuriesClosedPiper PA-25 · Ogden, UTNTSB NYC71FHJ07Accident · No injuriesClosedBell 47-G5 · Wading River, NYNTSB FTW71DRD13Accident · No injuriesClosedSnow S2C · Eunice, LANTSB MIA71DKG34Accident · No injuriesClosedPiper PA-25 · Moultrie, GANTSB OAK71FVG15Accident · Serious injuriesClosedNaval Fcty N3N · Winters, CANTSB FTW71FPG15Accident · Serious injuriesClosedBoeing E75 · Pickens, ARNTSB FTW71DPG16Accident · No injuriesClosedPiper PA-25 · Tuckerman, ARNTSB MIA71FKJ16Accident · 1 fatalClosedPiper PA-25 · Heflin, ALNTSB OAK71DVM12Accident · No injuriesClosedHiller Acft UH-12C · Castroville, CANTSB FTW71DPD15Accident · No injuriesClosedBoeing E75 · Comanche, TXNTSB NYC71FHD18Accident · No injuriesClosedBell 47G-2 · Medford, NJNTSB LAX71DVA22Accident · No injuriesClosedBoeing IB75A · Bakersfield, CANTSB FTW71FRG20Accident · No injuriesClosedPiper PA-25 · Edroy, TXNTSB CHI71FGG09Accident · Minor injuriesClosedNavion G · Coshocton, OHNTSB SEA71FWA12Accident · 1 fatalClosedBoeing A75 · Hood River, ORNTSB MIA71FKQ09Accident · Serious injuriesClosedPiper PA-25 · Stringer, MSNTSB LAX71AL008Accident · 1 fatalClosedPiper PA-12 · Bulhead Cty, AZNTSB FTW71FPG13Accident · No injuriesClosedPiper PA-25 · Cash, ARNTSB FTW71DPG14Accident · No injuriesClosedPiper PA-25 · Widener, ARNTSB CHI71DGD10Accident · Minor injuriesClosedSnow 600S2D · Maumee, OHNTSB MIA71FKG21Accident · Serious injuriesClosedPiper PA-25 · Unadilla, GANTSB MIA71DLG07Accident · No injuriesClosedCallair A-9 · Allendale, SCNTSB FTW71FPG12Accident · No injuriesClosedPiper PA-25 · Newport, ARNTSB MKC71DCD23Accident · Minor injuriesClosedPiper PA-11 · Emerson, IANTSB FTW71DPM07Accident · No injuriesClosedPiper PA-25 · Wade, OKNTSB DEN71FXA05Accident · 2 fatalClosedBoeing TB-17F · Dubois, WY