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 FTW75FRD03Accident · Minor injuriesClosedGrumman G-164 · Jeanerette, LANTSB FTW75FRA01Accident · Serious injuriesClosedGrumman G-164A · Wharton, TXNTSB CHI75FEI01Accident · Minor injuriesClosedBell 47G-5 · Wauseon, OHNTSB IAD75DKM01Accident · Minor injuriesClosedHughes 269A · Shelby, NCNTSB OAK75DVD03Accident · No injuriesClosedBell 47G-2 · Linden, CANTSB FTW75DPG02Accident · No injuriesClosedBell 47D-1 · Almyra, ARNTSB OAK75FVD02Accident · 1 fatalClosedBoeing D75N1 · Hopland, CANTSB MKC75DCJ02Accident · No injuriesClosedPiper PA-25 · Overton, NENTSB MIA75AM001Accident · 1 fatalClosedCessna 150J · Lake Alfred, FLNTSB NYC75FNC01Accident · Serious injuriesClosedAeronca 11AC · Lyman, MENTSB MKC75FTG13Accident · No injuriesClosedPiper PA-25 · Kenmare, NDNTSB CHI75AC001Accident · 1 fatalClosedBeech H18 · Iron Mtn, MINTSB ANC75DAA01Accident · No injuriesClosedPiper PA-14 · Dearing, AKNTSB MKC75FTG01Accident · 1 fatalClosedPiper PA-11 · Rolla, NDNTSB MIA75FKG01Accident · 1 fatalClosedAero Comdr A-9B · Hawkinsville, GANTSB MKC74FCD45Accident · Minor injuriesClosedCessna 120 · Keosauqa, IANTSB IAD74DKM58Accident · Serious injuriesClosedChampion 7KCAB · Laurel Springs, NCNTSB IAD74AI071Accident · 2 fatalClosedCessna 150L · Fayetteville, NCNTSB FTW74FPG79Accident · 1 fatalClosedBoeing E75 · Hazen, ARNTSB SEA74FYI13Accident · Serious injuriesClosedStearman A75N1 · Klamath Flls, ORNTSB MIA74DLG37Accident · No injuriesClosedAero Comdr A-9 · Bishopville, SCNTSB LAX74FUJ72Accident · 1 fatalClosedCallair A-9 · Maricopa, AZNTSB NYC75FFJ01Accident · Minor injuriesClosedPiper PA-25 · Cohocton, NYNTSB MKC74FTG22Accident · No injuriesClosedPiper PA-25 · Hazelton, NDNTSB LAX74FUJ73Accident · 2 fatalClosedConvair P4Y-2 · Safford, AZNTSB LAX74DUM38Accident · No injuriesClosedSnow 600S2C · Calipatria, CANTSB FTW74FPG81Accident · Serious injuriesClosedCessna 120 · Altheimer, ARNTSB FTW74DPG77Accident · Minor injuriesClosedCallair A-6 · Sparkman, ARNTSB FTW74DPG76Accident · No injuriesClosedPiper PA-25 · Pollard, ARNTSB IAD74FLQ42Accident · 1 fatalClosedAeronca 7GCA · Allensville, KYNTSB SEA74DYG49Accident · No injuriesClosedBell 47G-2 · Ephrata, WANTSB MKC74DTG21Accident · No injuriesClosedPiper PA-25 · Reeder, NDNTSB SEA74DYG50Accident · Minor injuriesClosedBell 47G3B2 · Clarkston, WANTSB NYC74DNC49Accident · No injuriesClosedAeronca 7DC · Winterport, MENTSB MKC74FTG20Accident · Minor injuriesClosedPiper PA-25 · Arthur, NDNTSB SEA74DYA41Accident · No injuriesClosedCallair A-5 · Monteview, IDNTSB FTW74FPG74Accident · No injuriesClosedPiper PA-25 · Walnut Ridge, ARNTSB FTW74DRJ37Accident · No injuriesClosedPiper PA-25 · Collinston, LANTSB FTW74DRA46Accident · No injuriesClosedBoeing E75 · Rosharon, TXNTSB MKC74FER59Accident · Serious injuriesClosedCallair A-9 · Stephen, MNNTSB MKC74DER60Accident · Minor injuriesClosedCessna 188 · Crookston, MNNTSB MKC74DER58Accident · Minor injuriesClosedPiper PA-25 · Long Prairie, MNNTSB MKC74DCJ48Accident · No injuriesClosedPiper PA-28 · Lakeside, NENTSB FTW74DPD44Accident · No injuriesClosedPiper PA-25 · Iowa Park, TXNTSB MIA74DLE08Accident · No injuriesClosedBell 47G · Mulberry, FLNTSB FTW74FRJ38Accident · Minor injuriesClosedGrumman G-164A · Mer Rouge, LANTSB FTW74FPM29Accident · No injuriesClosedEL Tomcat 47 · Zafra, OKNTSB NYC74DHM32Accident · No injuriesClosedBell 47G · Imlaystown, NJNTSB MKC74FCD40Accident · Minor injuriesClosedPiper PA-25 · Unionville, IANTSB MKC74DCQ47Accident · No injuriesClosedBoeing A75 · Hepler, KS