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 CHI72FEM20Accident · 1 fatalClosedMong Sport MS-2 · Negaunee, MINTSB OAK72FVG22Accident · 1 fatalClosedGrumman TBM3E · Placerville, CANTSB MIA72FKQ16Accident · No injuriesClosedCessna 188 · Chatham, MSNTSB MIA72DKQ17Accident · No injuriesClosedCessna 188 · Sumner, MSNTSB LAX72FUJ39Accident · No injuriesClosedNaval Fcty N3N-3 · Phoenix, AZNTSB FTW72FRA09Accident · No injuriesClosedGrumman G-164A · Navasota, TXNTSB CHI72AC019Accident · 2 fatalClosedPiper PA-22 · Angola, INNTSB NYC72FNA10Accident · No injuriesClosedBell 47G-4A · Norwood, MANTSB NYC72DID11Accident · No injuriesClosedPiper PA-28R · Wingina, VANTSB MIA72DKQ15Accident · No injuriesClosedPiper PA-18 · Edwards, MSNTSB DEN72DTE24Accident · No injuriesClosedBell 204B · Dillon, CONTSB FTW72FPA05Accident · No injuriesClosedPiper PA-25 · Rockwall, TXNTSB MKC72FCJ22Accident · Minor injuriesClosedCallair A-9 · Stromsburg, NENTSB FTW72FPD06Accident · No injuriesClosedBell 47G-4 · Grandview, TXNTSB FTW72DPD20Accident · No injuriesClosedPiper PA-25 · Glenrose, TXNTSB NYC72FLJ08Accident · Serious injuriesClosedPiper PA-18 · Linden, NCNTSB OAK72DVG21Accident · No injuriesClosedConvair PBY-6A · Paskenta, CANTSB OAK72DVD16Accident · No injuriesClosedPiper PA-25 · Tracy, CANTSB MIA72FKQ12Accident · No injuriesClosedBell 47D-1 · Mt Olive, MSNTSB MIA72FLT05Accident · No injuriesClosedCessna 188 · Tunica, MSNTSB LAX72AL016Accident · 3 fatalClosedCessna 172 · Julian, CANTSB MKC72DER18Accident · Minor injuriesClosedBell 47G-5 · Blomkist, MNNTSB LAX72FUQ15Accident · 2 fatalClosedN.American P-51D · Palmdale, CANTSB FTW72FPM05Accident · No injuriesClosedPiper PA-25 · Atwood, OKNTSB FTW72FPG32Accident · Serious injuriesClosedPiper PA-18A · W.Helena, ARNTSB CHI72FEG08Accident · Minor injuriesClosedAeronca 7AC · Martinsville, OHNTSB MIA72FKQ08Accident · Minor injuriesClosedCessna 188A · Hollandale, MSNTSB MIA72FKG31Accident · 1 fatalClosedCallair A-9 · Buena Vista, GANTSB MIA72DKQ22Accident · No injuriesClosedBoeing B75N1 · Nitta Yuma, MSNTSB FTW72DPD11Accident · No injuriesClosedCallair A-9 · Deleon, TXNTSB NYC72FHJ07Accident · Serious injuriesClosedLuscombe 11A · East Moriches, NYNTSB NYC72FHD08Accident · No injuriesClosedNaval Fcty N3N-3 · Atlantic City, NJNTSB LAX72DUJ31Accident · No injuriesClosedCallair A-9 · Casa Grande, AZNTSB NYC72FLJ06Accident · Minor injuriesClosedPiper PA-25 · Dundarrach, NCNTSB MKC72FCJ19Accident · Serious injuriesClosedBell 47D1 · Bellwood, NENTSB MIA72DLG09Accident · No injuriesClosedBell 47D-1 · Rembert, SCNTSB MIA72DKG25Accident · No injuriesClosedCallair A9 · Waynesboro, GANTSB FTW72DPG28Accident · Minor injuriesClosedBoeing D75N1 · Joiner, ARNTSB ANC72DAA09Accident · Minor injuriesClosedPiper PA-18 · Big Delta, AKNTSB MIA72DKG29Accident · No injuriesClosedAero Comdr A9B · Nevils, GANTSB MIA72DKG34Accident · No injuriesClosedAero Comdr A-9B · Iron City, GANTSB NYC72FIG10Accident · 1 fatalClosedDehavnd Can DHC-1B · Stevensville, MDNTSB MIA72AM012Accident · 2 fatalClosedPiper PA-23 · Hillsboro, TNNTSB UNK71X0110Accident · Serious injuriesClosedFairchild PT-26 · Carp, CanadaNTSB MKC72FER17Accident · Minor injuriesClosedPiper PA-25 · E Grnd Forks, MNNTSB MIA72FLG08Accident · No injuriesClosedBell 47D-1 · Cheraw, SCNTSB FTW72DRD08Accident · No injuriesClosedGrumman G-164 · Jeanerette, LANTSB CHI72FEI13Accident · Serious injuriesClosedCessna 150H · Sheffield, OHNTSB MKC72DCD24Accident · No injuriesClosedHughes 269A · Nevada, IANTSB MKC72DCD21Accident · No injuriesClosedGrumman G-164 · Albia, IA