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 SEA72FYC46Accident · Serious injuriesClosedBellanca 1419-2 · Hermiston, ORNTSB FTW72FRG93Accident · 1 fatalClosedAero Comdr A-9B · Weslaco, TXNTSB SEA72FYA37Accident · Serious injuriesClosedPiper PA-25 · Nyssa, ORNTSB NYC72AN148Accident · Minor injuriesClosedBell 206A · Matewan, WVNTSB MKC72DCD74Accident · Minor injuriesClosedGrumman G-164A · Ottumwa, IANTSB NYC72FHM56Accident · No injuriesClosedBell 47G-5 · Freehold, NJNTSB MIA72FLG43Accident · No injuriesClosedCallair A-9 · Barnwell, SCNTSB MIA72FKJ59Accident · 1 fatalClosedPiper PA-18A · Robertsdale, ALNTSB SEA72FYG44Accident · Serious injuriesClosedTaylorcraft BC1265 · Warden, WANTSB SEA72DYG45Accident · No injuriesClosedBell 47G-2 · Warden, WANTSB MKC72FCQ58Accident · 1 fatalClosedCallair A-9B · Ulysses, KSNTSB MIA72AM129Accident · 2 fatalClosedCessna 150J · Green Cove Sp, FLNTSB MKC72DTK30Accident · No injuriesClosedPiper PA-25 · Conde, SDNTSB CHI72FET33Accident · 1 fatalClosedCessna 188A · South Bend, INNTSB MKC72DCJ71Accident · No injuriesClosedPiper PA-25 · Crawford, NENTSB MIA72AM128Accident · 2 fatalClosedFairchild M-62A · Madison, MSNTSB MIA72FKH08Accident · No injuriesClosedPiper PA-18A · Pitts, GANTSB FTW72FRG91Accident · 1 fatalClosedCallair A-9B · Los Fresnos, TXNTSB FTW72FPG82Accident · Minor injuriesClosedCessna 182 · Guion, ARNTSB FTW72FPG81Accident · Serious injuriesClosedCessna 150 · Guion, ARNTSB FTW72DRG92Accident · No injuriesClosedCessna 150 · Laredo, TXNTSB CHI72FEA46Accident · No injuriesClosedBell 47D-1 · Haubstadt, INNTSB NYC72FHM54Accident · Minor injuriesClosedHughes 269A · Livngstn Manor, NYNTSB SEA72AS051Accident · 3 fatalClosedPiper PA-22 · Sunriver, ORNTSB OAK72DXQ34Accident · No injuriesClosedKaman K-600 · Orovada, NVNTSB NYC72DGM48Accident · Minor injuriesClosedPitts Spcl S-1 · Derry, PANTSB FTW72FPG79Accident · 1 fatalClosedBoeing A75N1 · Hazen, ARNTSB MIA72FKJ57Accident · Serious injuriesClosedStarduster TOO · Alabaster, ALNTSB SEA72DYG43Accident · No injuriesClosedBoeing A75N1 · Dayton, WANTSB ANC72DAH16Accident · No injuriesClosedPiper PA-18 · Mcgrath, AKNTSB SEA72DYG40Accident · No injuriesClosedBell 47G2 · Moses Lake, WANTSB MKC72FER62Accident · Serious injuriesClosedAero Comdr A-9B · Mt.Lake, MNNTSB MKC72DCQ57Accident · No injuriesClosedPiper PA-25 · Laharpe, KSNTSB MKC72DCJ70Accident · No injuriesClosedPiper PA-25 · Broken Bow, NENTSB MIA72FLA47Accident · Minor injuriesClosedBoeing A75N1 · Obrien, FLNTSB SEA72FYG39Accident · No injuriesClosedPiper PA-25 · Troy, IDNTSB MKC72FTK29Accident · Serious injuriesClosedPiper PA-18 · Fort Pierre, SDNTSB FTW72FPG77Accident · Serious injuriesClosedGrumman G-164A · Pine Bluff, ARNTSB LAX72FUG74Accident · 2 fatalClosedStarduster TOO · Adelanto, CANTSB CHI72FET27Accident · Serious injuriesClosedPiper PA-25 · Mishawaka, INNTSB MKC72FCQ56Accident · Serious injuriesClosedPiper PA-18 · Laharpe, KSNTSB MIA72FKW27Accident · No injuriesClosedPiper PA-25 · Athens, TNNTSB MIA72FKH05Accident · 1 fatalClosedAero Comdr A-9 · Leesburg, GANTSB FTW72DRG87Accident · No injuriesClosedPiper PA-18 · Long Mott, TXNTSB MIA72DKH03Accident · No injuriesClosedCessna 188 · Vienna, GANTSB FTW72FRA59Accident · No injuriesClosedGrumman G164A · Louise, TXNTSB DEN72FTE70Accident · No injuriesClosedHughes 269B · Fort Collins, CONTSB SEA72DYA35Accident · No injuriesClosedHiller Acft UH-12E · Dubois, IDNTSB CHI72FEP42Accident · No injuriesClosedCessna 182P · Bloomer, WINTSB MKC72FCA27Accident · No injuriesClosedPiper PA-25 · New Madrid, MO