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 FTW76DPG57Accident · No injuriesClosedGrumman G-164A · Harrisburg, ARNTSB FTW76DQG67Accident · Serious injuriesClosedBoeing B75N1 · Childress, TXNTSB CHI76FEA35Accident · Minor injuriesClosedBell 47G-2 · Monticello, INNTSB SEA76AS049Accident · 2 fatalClosedCessna 172K · Weiser, IDNTSB OAK76DVD36Accident · No injuriesClosedBell 47G-5 · Cloverdale, CANTSB CHI76FET34Accident · Minor injuriesClosedCessna 188B · Union, MINTSB CHI76FEA34Accident · 1 fatalClosedPiper PA-25 · Columbus, INNTSB MIA76FKJ62Accident · Serious injuriesClosedCessna A188B · Mobile, ALNTSB FTW76DPG63Accident · No injuriesClosedGrumman G-164A · St.Charles, ARNTSB MKC76DCQ51Accident · No injuriesClosedHughes 369 · Elkhart, KSNTSB MKC76DCD42Accident · No injuriesClosedCessna 188 · Cedar Falls, IANTSB SEA76FYA24Accident · No injuriesClosedBell 47G3B1 · Burley, IDNTSB SEA76FTI27Accident · No injuriesClosedCessna 188B · Three Forks, MTNTSB MIA76AM085Accident · 1 fatalClosedCessna 210G · Livingston, ALNTSB FTW76DQG65Accident · Minor injuriesClosedBoeing E75 · Rotan, TXNTSB DEN76FTE69Accident · Minor injuriesClosedPitts S-1E · Falcon, CONTSB SEA76FYC45Accident · Serious injuriesClosedHiller Acft UH-12E · Tillamook, ORNTSB FTW76FRD47Accident · No injuriesClosedGrumman G-164A · Lake Charles, LANTSB FTW76DPG50Accident · Minor injuriesClosedGrumman G-164A · Carlisle, ARNTSB CHI76AC062Accident · 1 fatalClosedPiper PA-28 · Milan, MINTSB SEA76DYE41Accident · Minor injuriesClosedBell 47G-3B · Forks, WANTSB OAK76DVG75Accident · No injuriesClosedPitts Spcl S-1 · Angels Camp, CANTSB LAX76DUJ80Accident · No injuriesClosedHiller Acft UH-12E · Somerton, AZNTSB SEA76FYG50Accident · No injuriesClosedBell 47G-3B · Spokane, WANTSB SEA76FYE40Accident · Serious injuriesClosedTaylorcraft L-2 · Shelton, WANTSB MKC76AK057Accident · 2 fatalClosedTaylorcraft DCO-65 · Bernie, MONTSB CHI76FEV38Accident · No injuriesClosedPiper PA-22 · Mansfield, ILNTSB NYC76FHA29Accident · No injuriesClosedEnstrom F-28A · Coopersburg, PANTSB FTW76FRD42Accident · Serious injuriesClosedGrumman G-164A · Elton, LANTSB OAK76DXQ42Accident · No injuriesClosedPiper PA-12 · Winnemucca, NVNTSB CHI76AC059Accident · 1 fatalClosedBoeing A75N1 · Lake Geneva, WINTSB OAK76DVG74Accident · No injuriesClosedCessna 172M · Lake Berryessa, CANTSB OAK76DVG73Accident · No injuriesClosedGrumman G-164A · Marysville, CANTSB LAX76DUG49Accident · No injuriesClosedCessna 172 · Mecca, CANTSB SEA76FYC43Accident · 1 fatalClosedSnow S2A · Heppner, ORNTSB OAK76DVG72Accident · No injuriesClosedAeronca 7AC · Colusa, CANTSB LAX76FUG48Accident · 1 fatalClosedAcroduster SA-700 · Corona, CANTSB FTW76FRD41Accident · No injuriesClosedPiper PA-25 · Elton, LANTSB SEA76FYG49Accident · 1 fatalClosedGrumman G-164A · Oakesdale, WANTSB NYC76FHA28Accident · No injuriesClosedBellanca 8KCAB · Sussex, NJNTSB MKC76FCD41Accident · Minor injuriesClosedRaven RX-6 · Carlisle, IANTSB MIA76DKT73Accident · Minor injuriesClosedCessna 150A · Ft Lauderdale, FLNTSB LAX76DVA56Accident · No injuriesClosedBell 47G3B1 · Coalinga, CANTSB FTW76DPJ32Accident · Serious injuriesClosedPiper PA-25 · Mcqueen, OKNTSB CHI76FEV32Accident · No injuriesClosedHiller Acft UH-12D · Eldred, ILNTSB LAX76DVA58Accident · No injuriesClosedGrumman G-164B · Buttonwillow, CANTSB FTW76DRG50Accident · Minor injuriesClosedGrumman G-164 · Placedo, TXNTSB MIA76FKQ29Accident · No injuriesClosedPiper PA-25 · Pace, MSNTSB FTW76FRG49Accident · Serious injuriesClosedSnow 600S2C · Mathis, TXNTSB FTW76FRA35Accident · 1 fatalClosedAero Comdr 600S2R · Fulsher, TX