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 DEN74FQA51Accident · No injuriesClosedPiper PA-28 · Jmez Pueblo, NMNTSB SEA74DYA40Accident · No injuriesClosedCallair A-9 · Terreton, IDNTSB SEA74DYA37Accident · No injuriesClosedBoeing E75 · Shoshone, IDNTSB MIA74D2G34Accident · Minor injuriesClosedCessna 188 · Florence, SCNTSB FTW74DPM28Accident · No injuriesClosedGrumman G-164 · Atoka, OKNTSB SEA74DTI29Accident · No injuriesClosedBell 47G3B1 · Lima, MTNTSB MIA74DKJ63Accident · No injuriesClosedGrumman G-164 · Moundville, ALNTSB OAK74AP067Accident · 2 fatalClosedPiper PA-28 · Glen Ellen, CANTSB MIA74DKG85Accident · No injuriesClosedPiper PA-25 · Fort Valley, GANTSB DEN74FTE84Accident · Serious injuriesClosedCallair A-9B · Hoyt, CONTSB MIA74DLE01Accident · No injuriesClosedMaule M4-200 · Winter Haven, FLNTSB MIA74DKG84Accident · No injuriesClosedPiper PA-25 · Warwick, GANTSB CHI74DEA46Accident · No injuriesClosedCessna 172 · Greentown, INNTSB SEA74FTI25Accident · Serious injuriesClosedPiper PA-25 · Pablo, MTNTSB SEA74DYE48Accident · No injuriesClosedBell 47G · Elma, WANTSB FTW74FRD48Accident · No injuriesClosedGrumman G-164A · Kaplan, LANTSB FTW74FPA26Accident · 1 fatalClosedPiper PA-25 · Venus, TXNTSB DEN74DTE80Accident · No injuriesClosedPiper PA-18 · Two Buttes, CONTSB SEA74DYA42Accident · No injuriesClosedCallair A-9B · Idaho Falls, IDNTSB FTW74DRG96Accident · No injuriesClosedBoeing A75N1 · Santa Rosa, TXNTSB SEA74DYA43Accident · No injuriesClosedCessna 188 · Nyssa, ORNTSB NYC74AM106Accident · 1 fatalClosedPiper PA-28 · Huntington, WVNTSB MKC74AK068Accident · 1 fatalClosedBellanca 7KCAB · Glenburn, NDNTSB LAX74FVA70Accident · 2 fatalClosedRyan ST-3KR · Porterville, CANTSB SEA74FTA27Accident · No injuriesClosedPiper PA-25 · Broadview, MTNTSB FTW74DRD47Accident · No injuriesClosedGrumman G-164A · Mamou, LANTSB OAK74DVG63Accident · Minor injuriesClosedBoeing B75 · Zamora, CANTSB FTW74FRD45Accident · No injuriesClosedGrumman G-164A · Frey, LANTSB DEN74FTE82Accident · Minor injuriesClosedMaule M4220C · Dove Creek, CONTSB CHI74FEM65Accident · Serious injuriesClosedBellanca 7GCBC · Otsego, MINTSB SEA74FTI23Accident · Serious injuriesClosedPiper PA-18A · Brady, MTNTSB MIA74DLG29Accident · No injuriesClosedCallair A-9B · Allendale, SCNTSB MIA74DKQ23Accident · No injuriesClosedCessna A188B · Ruleville, MSNTSB CHI74FEM63Accident · No injuriesClosedPiper PA-25 · Hart, MINTSB CHI74FEV55Accident · Minor injuriesClosedBrantly B-2 · Atterbury, ILNTSB SEA74FYC56Accident · 1 fatalClosedMay Flybaby 1 · Salem, ORNTSB NYC74FFA32Accident · No injuriesClosedGilmore 3D · Westerlo, NYNTSB FTW74DPG66Accident · No injuriesClosedGrumman G-164A · Carlisle, ARNTSB FTW74AF087Accident · 2 fatalClosedCessna 140 · Sand Springs, OKNTSB FTW74DPJ33Accident · No injuriesClosedPiper J-3 · Alva, OKNTSB SEA74DYG46Accident · No injuriesClosedAero Comdr 600S2R · Moses Lake, WANTSB SEA74DYC54Accident · Minor injuriesClosedBell 47G-3B · North Powder, ORNTSB OAK74FVM29Accident · No injuriesClosedBellanca 8KCAB · Gilroy, CANTSB IAD74AI064Accident · 1 fatalClosedBellanca 8KCAB · Scottsville, VANTSB FTW74FPG67Accident · Serious injuriesClosedPiper PA-25 · Waldenburg, ARNTSB LAX74FVM28Accident · 1 fatalClosedBell 47G-5 · Cayucas, CANTSB IAD74FLQ33Accident · Serious injuriesClosedBoeing E75 · Clay, KYNTSB FTW74DRG88Accident · Serious injuriesClosedSnow 600S2C · Brownsville, TXNTSB FTW74DRD40Accident · Minor injuriesClosedGrumman G-164A · Morrow, LANTSB FTW74DPG65Accident · No injuriesClosedGrumman G-164 · St.Charles, AR