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 SEA74FYE23Accident · No injuriesClosedSikorsky S-58E · Alpental, WANTSB LAX74FUM09Accident · No injuriesClosedHiller Acft UH-12E · El Centro, CANTSB FTW74FPA07Accident · Minor injuriesClosedJungmeister Bucker · Commerce, TXNTSB MKC74DCA11Accident · No injuriesClosedGrumman G-164 · Charleston, MONTSB FTW74FQG18Accident · 1 fatalClosedPiper PA-25 · Post, TXNTSB IAD74FKW19Accident · Minor injuriesClosedPiper PA-28R · Knoxville, TNNTSB FTW74DQG19Accident · No injuriesClosedPiper PA-25 · Fluvanna, TXNTSB SEA74FYA13Accident · No injuriesClosedBell 47G-3B · Marsing, IDNTSB FTW74FQG20Accident · 1 fatalClosedPiper PA-25 · Wolfforth, TXNTSB DEN74DQA20Accident · Minor injuriesClosedPiper J-3 · Stead, NMNTSB CHI74FEG10Accident · Minor injuriesClosedCessna A150K · Mcarthur, OHNTSB OAK74DVD17Accident · No injuriesClosedBell 47G2 · Brentwood, CANTSB MIA74AM029Accident · 2 fatalClosedCessna 150K · Melbourne, FLNTSB CHI74FEA15Accident · 1 fatalClosedCorbin B-ACE · Franklin, INNTSB SEA74DYE20Accident · No injuriesClosedBell 47F-2 · Forks, WANTSB FTW74DPG30Accident · No injuriesClosedAero Comdr S-2R · Fisher, ARNTSB NYC74DFJ12Accident · Minor injuriesClosedBell 47J-2 · Niagara Falls, NYNTSB CHI74AC031Accident · 2 fatalClosedBellanca 7GCBC · Morris, ILNTSB OAK74DVA22Accident · No injuriesClosedBell 47G-5 · Fresno, CANTSB OAK74DVA21Accident · No injuriesClosedBoeing A75N1 · Dos Palos, CANTSB MKC74AK015Accident · 1 fatalClosedPiper PA-18 · Kennett, MONTSB SEA74DYA12Accident · Serious injuriesClosedBell 47G-3B · New Meadows, IDNTSB OAK74FJA04Accident · Minor injuriesClosedBoeing D75N1 · Honolulu, HINTSB FTW74FPG27Accident · Minor injuriesClosedPiper PA-25 · Rohwer, ARNTSB DEN74DQD06Accident · No injuriesClosedPiper PA-28 · Silver City, NMNTSB FTW74FPD15Accident · 1 fatalClosedStinson L-5 · Grandview, TXNTSB SEA74AS018Accident · 8 fatalClosedCessna 402B · Utica, MTNTSB OAK74FVA20Accident · 1 fatalClosedVultee BT-13A · Madera, CANTSB FTW74FPG26Accident · No injuriesClosedBell 47G2A1 · Little Rock, ARNTSB MIA74FKG33Accident · No injuriesClosedGrumman G-164A · Quitman, GANTSB FTW74FRA16Accident · Minor injuriesClosedChampion 7KCAB · Friendswood, TXNTSB CHI74AC026Accident · 2 fatalClosedCessna A150L · Holly, MINTSB MIA74FKG30Accident · 1 fatalClosedAero Comdr A-9B · Jordan, GANTSB IAD74AI019Accident · 1 fatalClosedAmer Avco AA-1B · Jackson, TNNTSB FTW74FPG24Accident · Serious injuriesClosedAeronca 7BC · Lake Village, ARNTSB FTW74AF018Accident · 2 fatalClosedChampion 7KCAB · Jacksonville, ARNTSB SEA74AS017Accident · 2 fatalClosedPiper PA-20 · Oakesdale, WANTSB FTW74FPG23Accident · Serious injuriesClosedBell 47G2 · Viola, ARNTSB MIA74DKG28Accident · No injuriesClosedPiper PA-25 · Cochran, GANTSB SEA74AS016Accident · 3 fatalClosedCessna 172L · Chiloquin, ORNTSB CHI74DEA13Accident · No injuriesClosedBell 47G-2A · Veedersburg, INNTSB OAK74FVD14Accident · No injuriesClosedHiller Acft UH-12C · Brentwood, CANTSB IAD74DKM19Accident · No injuriesClosedFairchild M-62C · Hiddenite, NCNTSB MKC74FCD14Accident · 1 fatalClosedPiper J3C-65 · Redfield, IANTSB SEA74FTA07Accident · Minor injuriesClosedBell 206B · Lewistown, MTNTSB SEA74DYA11Accident · No injuriesClosedGrumman G-164A · Idaho Falls, IDNTSB SEA74AS014Accident · 4 fatalClosedPiper PA-28 · Idaho Cty, IDNTSB OAK74FVG09Accident · No injuriesClosedHughes 269 · Sloughhouse, CANTSB MIA74FKT17Accident · 1 fatalClosedPitts S-1S · Homestead, FLNTSB FTW74DPM07Accident · No injuriesClosedErco 415-C · Silver City, OK