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 LAX73FVA40Accident · 1 fatalClosedGrumman G-164 · Edison, CANTSB MIA73AM080Accident · 1 fatalClosedAmer Avco AA1 · Attapulgus, GANTSB CHI73AC068Accident · 2 fatalClosedCessna 150L · Morris, ILNTSB OAK73FVG44Accident · Serious injuriesClosedAeronca 7AC · Sloughhouse, CANTSB FTW73DPJ08Accident · No injuriesClosedPiper J3C · Alva, OKNTSB DEN73AD034Accident · 2 fatalClosedBellanca 17-31A · Aurora, CONTSB LAX73AL036Accident · 1 fatalClosedGlobe GC-1B · Desert Cntr, CANTSB OAK73DVG41Accident · No injuriesClosedBell 47D1 · Marysville, CANTSB OAK73DVG42Accident · No injuriesClosedMooney M20G · Sacramento, CANTSB OAK73FVD24Accident · 1 fatalClosedAeronca 7AC · Sonoma, CANTSB MKC73FER36Accident · Serious injuriesClosedCessna A185E · Warroad, MNNTSB NYC73AN100Accident · 1 fatalClosedPiper PA-18 · Providence Frg, VANTSB MIA73FKT46Accident · Serious injuriesClosedCessna 150 · Coral Springs, FLNTSB FTW73AF035Accident · 2 fatalClosedCessna 150G · Manila, ARNTSB MIA73FKW14Accident · No injuriesClosedPiper PA-28 · Chuckey, TNNTSB CHI73FEV19Accident · Minor injuriesClosedCessna 150H · Albion, ILNTSB NYC73FIA08Accident · No injuriesClosedEnstrom F-28A · Fairfax, VANTSB OAK73AP018Accident · 1 fatalClosedBeech C35 · Middletown, CANTSB FTW73DPD17Accident · No injuriesClosedHiller Acft UH-12C · Valley View, TXNTSB MIA73FKT39Accident · 1 fatalClosedBoeing E75 · Clewiston, FLNTSB OAK73DVM21Accident · No injuriesClosedBell 47G-2 · Salinas, CANTSB SEA73FYG21Accident · 2 fatalClosedSikorsky S-61A · Chelan, WANTSB SEA73DYC14Accident · No injuriesClosedCessna 170B · Wallowa, ORNTSB FTW73FQG25Accident · Serious injuriesClosedStits SA6-B · Spearman, TXNTSB LAX73DVA30Accident · No injuriesClosedBell 47G-2 · Richgrove, CANTSB ANC73DAG66Accident · No injuriesClosedPiper PA-18 · Glenallen, AKNTSB OAK73FJA08Accident · 1 fatalClosedPiper J5C · Kaanapali, HINTSB LAX73FUQ17Accident · Minor injuriesClosedPiper PA-28 · Goleta, CANTSB DEN73ADO24Accident · 1 fatalClosedLuscombe 8A · Cody, WYNTSB FTW73DRJ24Accident · Minor injuriesClosedAeronca 7DC · Lk Providence, LANTSB FTW73AF020Accident · 2 fatalClosedPiper PA-24 · Mt.Vernon, TXNTSB ANC73AA033Accident · 1 fatalClosedCessna 206 · Anchorage, AKNTSB NYC73AN062Accident · 1 fatalClosedChampion 7GCB · Honesdale, PANTSB FTW73FRA12Accident · Serious injuriesClosedCessna 172 · Riverside, TXNTSB MKC73AKO34Accident · 2 fatalClosedCessna A150K · Wentzville, MONTSB FTW73FQG23Accident · Serious injuriesClosedGrumman G-164 · Roby, TXNTSB MIA73DLT11Accident · No injuriesClosedHughes 269B · Millington, TNNTSB CHI73FET09Accident · No injuriesClosedHughes 269A · Gary, INNTSB MIA73DKJ31Accident · No injuriesClosedCessna 150J · Tuscaloosa, ALNTSB FTW73FRG24Accident · Serious injuriesClosedPiper PA-28 · Round Rock, TXNTSB MIA73FLD24Accident · No injuriesClosedGrumman G-164A · Zellwood, FLNTSB LAX73FUM07Accident · Serious injuriesClosedNaval Fcty N3N-3 · Winterhaven, CANTSB MKC73FTK08Accident · No injuriesClosedCallair A-9A · Murdo, SDNTSB FTW73FPG32Accident · Serious injuriesClosedAero Comdr A-9B · Gould, ARNTSB FTW73DRG22Accident · No injuriesClosedPiper PA-25 · Uvalde, TXNTSB MKC73AK026Accident · 2 fatalClosedCessna 170B · Richmond, MONTSB FTW73AF013Accident · 2 fatalClosedPiper PA-28 · Comstock, TXNTSB LAX73DUJ31Accident · No injuriesClosedGrumman G-164A · Queen Creek, AZNTSB FTW73FPG31Accident · Serious injuriesClosedBoeing A75 · Moro, ARNTSB FTW73FRD08Accident · Serious injuriesClosedAeronca 7AC · Fenton, LA