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 ANC77FA054Accident · 1 fatalClosedAeronca 7AC · Sterling, AKNTSB FTW77FPG55Accident · Serious injuriesClosedPiper PA-25 · Des Arc, ARNTSB MKC77FCA27Accident · No injuriesClosedGrumman G-164A · Sikeston, MONTSB SEA77FYM44Accident · 1 fatalClosedBellanca 8KCAB · Ukiah, ORNTSB NYC77FHD18Accident · Serious injuriesClosedAeronca 7CCM · Egg Harbor, NJNTSB IAD77FLJ23Accident · No injuriesClosedPiper PA-25 · Mt Olive, NCNTSB FTW77DPG56Accident · No injuriesClosedPiper PA-28R · Mt.Olive, ARNTSB FTW77DPG54Accident · No injuriesClosedCessna A188B · Parkin, ARNTSB CHI77DEV31Accident · No injuriesClosedCessna 188B · Duquoin, ILNTSB OAK77FVW30Accident · No injuriesClosedEnstrom 280C · Las Vegas, NVNTSB NYC77FFJ31Accident · Minor injuriesClosedHughes 269C · Ashford, NYNTSB MIA77FKJ53Accident · No injuriesClosedPiper PA-18 · Riverside, ALNTSB MIA77DA066Accident · 2 fatalClosedDavis D-1-W · Camden, SCNTSB FTW77DPG53Accident · No injuriesClosedBell 47D1 · Alicia, ARNTSB MKC77DCJ26Accident · No injuriesClosedGrumman G-164A · Sidney, NENTSB MIA77FLD73Accident · 1 fatalClosedBoeing E-75 · Ft.Pierce, FLNTSB FTW77FQG36Accident · 1 fatalClosedAero Comdr A9B · Nolan, TXNTSB OAK77DVG47Accident · No injuriesClosedMaule M-4 · Weed, CANTSB NYC77FFJ27Accident · Minor injuriesClosedGrumman G-164B · Weedsport, NYNTSB MKC77FCQ44Accident · No injuriesClosedGrumman G-164A · Junction City, KSNTSB MKC77DTK28Accident · Serious injuriesClosedCessna 188B · Turton, SDNTSB MKC77DKT29Accident · No injuriesClosedCessna 172 · Camp Crook, SDNTSB MIA77DLG20Accident · No injuriesClosedBell 47D · Oswego, SCNTSB CHI77FEP41Accident · No injuriesClosedSnow S2C · Nekoosa, WINTSB CHI77FEM27Accident · No injuriesClosedCessna 188B · Grand Rapids, MINTSB CHI77DET19Accident · No injuriesClosedGrumman G-164A · Hebron, INNTSB MIA77FKQ18Accident · No injuriesClosedCessna 188 · Leland, MSNTSB IAD77FLQ15Accident · Serious injuriesClosedPiper PA-25 · Albany, KYNTSB CHI77FEG21Accident · 1 fatalClosedPitts S-1C · Minford, OHNTSB CHI77FEE31Accident · No injuriesClosedPitts S1 · Lockport, ILNTSB IAD77FA046Accident · 1 fatalClosedCessna 150E · Raleigh, NCNTSB MKC77FA027Accident · 2 fatalClosedCessna 172 · Cedar Rapids, IANTSB LAX77FUG43Accident · No injuriesClosedScorpion TOO · Corona, CANTSB IAD77FKW20Accident · 2 fatalClosedCessna 172 · Midtown Commun, TNNTSB MKC77FCD23Accident · 1 fatalClosedMorris Cass 111M · Winterset, IANTSB MIA77FKQ20Accident · Minor injuriesClosedCallair A9A · Holly Bluff, MSNTSB SEA77DYK15Accident · Minor injuriesClosedGrumman G-164A · Klamath Falls, ORNTSB MKC77FCQ42Accident · 1 fatalClosedCessna 188B · Olsburg, KSNTSB FTW77FPM13Accident · No injuriesClosedBell 47G · Copan, OKNTSB FTW77DRG55Accident · Minor injuriesClosedGrumman G-164A · San Benito, TXNTSB OAK77FVW21Accident · No injuriesClosedHughes 269B · Las Vegas, NVNTSB MKC77FER48Accident · No injuriesClosedPiper PA-25 · Shevlin, MNNTSB LAX77FUD07Accident · No injuriesClosedBell 47G-2 · Santa Monica, CANTSB FTW77DQG34Accident · No injuriesClosedPiper PA-25 · Seagraves, TXNTSB DEN77FTM19Accident · Minor injuriesClosedCessna 188B · Vernal, UTNTSB OAK77FA036Accident · 1 fatalClosedN.American SNJ-5 · Petaluma, CANTSB IAD77DKW19Accident · Minor injuriesClosedCessna 150 · Center Hill Lk, TNNTSB FTW77FRD35Accident · No injuriesClosedBoeing A75N1 · Sulphur, LANTSB CHI77FEV27Accident · 1 fatalClosedTolman SA-3AM · Salem, ILNTSB SEA77FYM41Accident · 1 fatalClosedPitts S1 · Forrest Grove, OR