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 OAK73DVG59Accident · No injuriesClosedBoeing A75N1 · Biggs, CANTSB OAK73FVG58Accident · No injuriesClosedBoeing A75N1 · E Nicolaus, CANTSB MKC73DCJ34Accident · No injuriesClosedCessna 188B · Sutton, NENTSB OAK74DVD01Accident · No injuriesClosedTravel Air 4000 · Lodi, CANTSB FTW73DRA22Accident · No injuriesClosedGrumman G-164A · Anahuac, TXNTSB IAD73FLJ28Accident · Serious injuriesClosedPiper PA-28R · Nags Head, NCNTSB DEN73FTE70Accident · 1 fatalClosedAmer Avco AA1 · Erie, CONTSB LAX73FUJ68Accident · 1 fatalClosedSnow S2A · Casa Grande, AZNTSB OAK73FVG56Accident · Minor injuriesClosedGrumman G-164 · Marysville, CANTSB MIA73FKT82Accident · Minor injuriesClosedAero Comdr 600S2R · Ft Myers, FLNTSB NYC73AN133Accident · 1 fatalClosedCessna 150 · Princeton, MANTSB MKC73AK062Accident · 2 fatalClosedCessna 150L · Medinan, NDNTSB MIA73AM098Accident · 1 fatalClosedCessna 177 · Key Largo, FLNTSB UNK73X0110Accident · No injuriesClosedHiller Acft UH-12B · Gothenburg, SWNTSB SEA73FYC24Accident · No injuriesClosedKaman K-600 · Pilot Rock, ORNTSB MIA73DLD70Accident · No injuriesClosedEL Tomcat Mksa · Arcadia, FLNTSB LAX73DVA49Accident · No injuriesClosedPiper PA-25 · Pond, CANTSB CHI73DEE51Accident · No injuriesClosedBeech 35-B33 · Plainfield, ILNTSB FTW73AF059Accident · 1 fatalClosedCessna 172H · Campbell, TXNTSB MKC73AK060Accident · 2 fatalClosedPiper PA-12 · Bock, MNNTSB CHI73FEM47Accident · No injuriesClosedCessna 172 · Hastings, MINTSB MKC73FCJ33Accident · No injuriesClosedCessna 150L · Fort Calhoun, NENTSB FTW73DRG66Accident · No injuriesClosedBell 47G · San Antonio, TXNTSB SEA73DYE30Accident · Serious injuriesClosedCessna 172 · Chehalis, WANTSB LAX73DUM31Accident · Minor injuriesClosedBoeing A75N1 · Holtville, CANTSB FTW73FRD18Accident · Minor injuriesClosedGrumman G-164A · Oberlin, LANTSB FTW73DRG65Accident · No injuriesClosedCessna 150 · Matamoros, MexicoNTSB OAK73DVA43Accident · No injuriesClosedSchweizer 2-33 · Piedra, CANTSB OAK73AP029Accident · 1 fatalClosedCessna 180A · Livermore, CANTSB MKC73DCQ26Accident · No injuriesClosedGrumman G-164 · Attica, KSNTSB FTW73DPD29Accident · No injuriesClosedAero Comdr S2R · Olney, TXNTSB MKC73DCD52Accident · No injuriesClosedBell 47G-2 · Hanlontown, IANTSB CHI73DE135Accident · No injuriesClosedGrumman G-164A · Kent, OHNTSB OAK73DVD28Accident · No injuriesClosedBell 47G-2 · Stockton, CANTSB OAK73AP027Accident · 1 fatalClosedChampion 7KCAB · Madera, CANTSB OAK73FVG53Accident · No injuriesClosedPiper PA-25 · W.Sacramnto, CANTSB CHI73FEV24Accident · Minor injuriesClosedPiper PA-18A · Claremont, ILNTSB MIA73FLA30Accident · Minor injuriesClosedCessna A188A · Hastings, FLNTSB SEA73FYC21Accident · No injuriesClosedCallair A-9B · Helix, ORNTSB LAX73FVA43Accident · Serious injuriesClosedWeatherly C63 · Avenal, CANTSB NYC73AN119Accident · 1 fatalClosedCessna 150 · York, NYNTSB OAK73FVG50Accident · Serious injuriesClosedHiller UH-12B · Live Oak, CANTSB LAX73AL040Accident · 1 fatalClosedAeronca 7AC · Apache Jctn, AZNTSB FTW73DRG54Accident · No injuriesClosedBoeing 75N1 · Raymondville, TXNTSB FTW73DPD21Accident · No injuriesClosedAero Comdr A-9B · Vernon, TXNTSB MKC73FCJ29Accident · 1 fatalClosedCessna A188B · Hebron, NENTSB MKC73AK052Accident · 2 fatalClosedBeech C50 · Republic, MONTSB MIA73DKT68Accident · No injuriesClosedAero Comdr S-2R · Loxahatchee, FLNTSB OAK73FVG48Accident · No injuriesClosedBell 47G3B1 · Gridley, CANTSB DEN73FTE57Accident · Minor injuriesClosedAeronca 11BC · Watkins, CO