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 MIA67F0066Accident · No injuriesClosedCallair A-5 · Camilla, GANTSB FTW66F0677Accident · Minor injuriesClosedCessna 150F · Greenville, TXNTSB FTW66F0676Accident · No injuriesClosedErcoupe 415-C · Frankston, TXNTSB FTW66A0107Accident · 2 fatalClosedPiper J3C-65 · Clarksville, TXNTSB DEN66A0084Accident · No injuriesClosedHiller UH-12E · Lonetree, WYNTSB FTW67F0019Accident · Minor injuriesClosedAeronca 65CA · Dalhart, TXNTSB MIA66D0576Accident · Minor injuriesClosedPiper PA-18 · Pompano Beach, FLNTSB MIA66F0548Accident · Serious injuriesClosedCessna 150 · Knoxville, TNNTSB MIA66A0133Accident · 1 fatalClosedFairchild 24G · Memphis, TNNTSB FTW66F0695Accident · No injuriesClosedSnow S2A · Tivoli, TXNTSB DEN66F0341Accident · No injuriesClosedPiper PA-25 · St.George, UTNTSB NYC66D0692Accident · Minor injuriesClosedChampion 7FC · Sharpsville, PANTSB NYC66A0129Accident · 1 fatalClosedAeronca 7AC · Winchester, VANTSB NYC66A0131Accident · No injuriesClosedBell 47G-5 · Hickory, PANTSB FTW66F0669Accident · Serious injuriesClosedBoeing A75N1 · Taylor, TXNTSB MKC66A0057Accident · 1 fatalClosedPiper PA-18 · De Smet, NDNTSB MIA66A0130Accident · Minor injuriesClosedHughes 269B · Pascagoula, MSNTSB FTW66F0666Accident · Serious injuriesClosedTaylorcraft DC-65 · Collinsville, OKNTSB FTW66F0665Accident · Minor injuriesClosedBoeing A75N1 · Nederland, TXNTSB NYC66A0126Accident · 2 fatalClosedPiper J3C-65 · Jim Thorpe, PANTSB FTW66F0696Accident · Serious injuriesClosedPiper PA-18A · La Pryor, TXNTSB FTW66F0692Accident · Serious injuriesClosedGrumman G-164 · Broken Arrow, OKNTSB DEN66D0351Accident · Minor injuriesClosedLuscombe 8A · Mesa, AZNTSB OAK66A0050Accident · No injuriesClosedBeel 47G-2 · Greenfield, CANTSB FTW66F0659Accident · Serious injuriesClosedTaylorcraft BL-65 · Sand Springs, OKNTSB DEN66A0080Accident · No injuriesClosedBell 47D1 · Albuquerque, NMNTSB FTW66F0658Accident · No injuriesClosedPiper J3C-65 · Lubbock, TXNTSB MIA66A0127Accident · No injuriesClosedHughes 269B · Landrum, SCNTSB OAK66F0283Accident · Serious injuriesClosedAeronca 7AC · Nipomo Mesa, CANTSB FTW66F0629Accident · No injuriesClosedBoeing E-75 · Ganado, TXNTSB SEA66F0268Accident · 1 fatalClosedPiper PA-25 · Kennewick, WANTSB CHI66F0692Accident · No injuriesClosedBeech 23 · Hoffman Estes, ILNTSB SEA66F0248Accident · No injuriesClosedCessna 180 · Chewelah, WANTSB OAK66F0237Accident · No injuriesClosedBoeing A-75N1 · Colusa, CANTSB MKC66A0053Accident · 1 fatalClosedCessna 140 · Savannah, MONTSB MIA66D0535Accident · No injuriesClosedPiper PA-25 · Dover, FLNTSB DEN66D0298Accident · No injuriesClosedChampion 7GCA · Arizona City, AZNTSB NYC66A0122Accident · 2 fatalClosedTaylorcraft DCO-65 · Bethel Maine, MENTSB NYC66F0640Accident · Serious injuriesClosedLuscombe T-8F · Charlemont, MANTSB OAK66F0274Accident · No injuriesClosedGrumman G-164 · Butte City, CANTSB LAX66A0078Accident · Minor injuriesClosedHughes 269A-1 · Culver City, CANTSB NYC66A0117Accident · 1 fatalClosedN.American P-51 · Lincoln, VANTSB MIA66F0547Accident · No injuriesClosedCessna 150 · Homestead, FLNTSB LAX66F0307Accident · Minor injuriesClosedLuscombe 8A · San Diego, CANTSB MKC66F0543Accident · Serious injuriesClosedCallair A-7 · Wichita, KSNTSB FTW66F0640Accident · No injuriesClosedPiper PA-18A · Yukon, OKNTSB OAK66D0233Accident · No injuriesClosedBoeing N75N-1 · Tracy, CANTSB MIA66F0501Accident · Minor injuriesClosedLuscombe 11A · Thomasville, NCNTSB LAX66F0372Accident · Serious injuriesClosedGR Lakes 2T-1 · Baker, CANTSB FTW66A0089Accident · 1 fatalClosedPiper PA-25 · Norman, OK