NTSB investigations
18,850 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 DEN66D0120Accident · No injuriesClosedPiper PA-22 · La Junta, CONTSB DEN65A0088Accident · 1 fatalClosedPiper PA18 · Carpio, NDNTSB MKC66F0148Accident · Serious injuriesClosedPiper PA-11 · Bisbee, NDNTSB FTW66D0144Accident · No injuriesClosedGrumman G-164 · Santa Maria, TXNTSB NYC66D0048Accident · No injuriesClosedCessna 180S · Milton, VTNTSB FTW65A0128Accident · No injuriesClosedHiller UH-12B · Mer Rouge, LANTSB SEA66F0006Accident · No injuriesClosedPiper PA-18A · Sunnyside, WANTSB NYC65A0155Accident · Minor injuriesClosedBrantly B-2 · Bayville Li, NYNTSB MIA65A0127Accident · 1 fatalClosedBensen B8M · Morrisville, NCNTSB NYC65A0154Accident · 1 fatalClosedPiper PA-24 · Winchester, VANTSB MKC65A0079Accident · 1 fatalClosedPiper PA-18 · Modoc, KSNTSB MIA65A0126Accident · 1 fatalClosedBoeing 75N1 · Sunflower, MSNTSB CHI66D0056Accident · No injuriesClosedChampion 7ECA · Whitehall, MINTSB MIA65A0125Accident · 1 fatalClosedPiper PA-12 · Tutwiler, MSNTSB LAX66F0056Accident · No injuriesClosedLuscombe 8A · Las Vegas, NVNTSB SEA66F0096Accident · No injuriesClosedPiper PA-18A · Copeland, IDNTSB SEA66F0087Accident · Serious injuriesClosedPiper PA-18A · Mosier, ORNTSB MKC66D0101Accident · Serious injuriesClosedBoeing N2S-3 · Friend, KSNTSB OAK66F0094Accident · Minor injuriesClosedBoeing B-75N1 · Watsonville, CANTSB MIA66F0045Accident · 1 fatalClosedCessna 210-5 · Del Rio, TNNTSB FTW66F0112Accident · No injuriesClosedPiper PA-25 · Harlingen, TXNTSB FTW65A0127Accident · 1 fatalClosedPiper PA-25 · Ft.Stockton, TXNTSB NYC65A0153Accident · 2 fatalClosedPiper PA-18 · Fairfield, NJNTSB MKC65A0077Accident · 1 fatalClosedPiper J3C · Nebraska City, NENTSB MIA66D0044Accident · Minor injuriesClosedCessna 172B · Starkville, MSNTSB LAX66F0003Accident · Serious injuriesClosedCessna 140 · Lathrop Wells, NVNTSB FTW66F0108Accident · Minor injuriesClosedTaylorcraft DC-65 · Monroe, LANTSB FTW66F0105Accident · No injuriesClosedPiper PA-25 · Laredo, TXNTSB OAK65A0073Accident · 2 fatalClosedAeronca 7AC · Sacramento, CANTSB MIA66F0123Accident · Serious injuriesClosedPiper J3 · Baxley, GANTSB SEA66F0050Accident · No injuriesClosedBoeing A75N1 · Merrill, ORNTSB MKC66F0113Accident · Serious injuriesClosedPiper PA-18 · Binford, NDNTSB MKC66F0059Accident · No injuriesClosedPiper PA-25 · Hays, KSNTSB MKC66F0064Accident · No injuriesClosedPiper PA-25 · Scottsbluff, NENTSB MIA65A0121Accident · 1 fatalClosedPiper PA-18 · Hartsville, SCNTSB MIA65A0120Accident · No injuriesClosedHughes 269A · Lamar, SCNTSB OAK66F0022Accident · Serious injuriesClosedBeechcraft J35 · Kettlemancity, CANTSB MIA66F0106Accident · No injuriesClosedBoeing A-75N1 · Alachua, FLNTSB MIA65A0119Accident · 1 fatalClosedPiper PA-18A · Lambert, MSNTSB MKC66F0041Accident · Serious injuriesClosedPiper PA-11 · Churchsferry, NDNTSB MIA66F0025Accident · No injuriesClosedBoeing B75N1 · Merritt Isl, FLNTSB CHI65A0104Accident · 2 fatalClosedGoodyear FG-1 · Ann Arbor, MINTSB MKC66F0053Accident · No injuriesClosedCallair A-6 · Humbolt, NENTSB SEA66F0062Accident · No injuriesClosedCallair A-6 · Lakeview, ORNTSB SEA66F0029Accident · No injuriesClosedBeechcraft A-23 · Harrisburg, ORNTSB MKC65A0075Accident · 2 fatalClosedPiper PA-22 · 6n Camdenton, MONTSB CHI65A0103Accident · No injuriesClosedBell B-47G3 · Galien, MINTSB MIA65A0118Accident · No injuriesClosedHughes 269B · Anasco, PRNTSB LAX66F0036Accident · No injuriesClosedLuscombe 8A · Santa Paula, CANTSB SEA66D0055Accident · No injuriesClosedPiper PA-18 · Winifred, MT