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 MKC65A0072Accident · No injuriesClosedBell 47G2 · Brooklyn Prk, MNNTSB LAX65A0094Accident · Serious injuriesClosedHiller UH-12E · Altadena, CANTSB MKC66F0104Accident · Minor injuriesClosedPiper PA-18 · Tulare, SDNTSB SEA66F0067Accident · No injuriesClosedPiper PA-18A · Paul, IDNTSB ANC66D0020Accident · Minor injuriesClosedPiper PA-22 · Sitkinak Is, AKNTSB FTW66F0090Accident · No injuriesClosedPiper PA-25 · Primera, TXNTSB FTW66D0089Accident · No injuriesClosedCallair A-4 · Abilene, TXNTSB ANC66D0003Accident · No injuriesClosedPiper PA-18A · Yentna River, AKNTSB SEA65F0067Accident · No injuriesClosedBoeing B75N1 · Reubens, IDNTSB MKC66F0032Accident · No injuriesClosedPiper PA-25 · Gilead, NENTSB FTW65A0122Accident · 1 fatalClosedPiper PA-18A · Gillett, ARNTSB SEA66D0040Accident · No injuriesClosedCallair A-9 · Boyd, MTNTSB MIA66F0019Accident · Serious injuriesClosedCallair A-9 · Doddsville, MSNTSB FTW65A0121Accident · 1 fatalClosedPiper PA-25 · Clarendon, ARNTSB SEA66F0023Accident · Serious injuriesClosedPiper PA-18A · Sisters, ORNTSB MIA65F0131Accident · No injuriesClosedPiper PA-25 · Shellman, GANTSB FTW66D0044Accident · Minor injuriesClosedNaval Arcft N3N-3 · Ferriday, FLNTSB DEN65A0076Accident · No injuriesClosedBoeing A-75N1 · Broomfield, CONTSB MKC66F0011Accident · No injuriesClosedPiper PA-28 · Salina, KSNTSB MKC66D0037Accident · No injuriesClosedPiper PA-18A · Decatur, NENTSB UNK65X1493Accident · Minor injuriesClosedBoeing A-75N1 · Freelighsburg, CanadaNTSB SEA66F0015Accident · Minor injuriesClosedPiper PA-18A · Mt Angel, ORNTSB MKC66F0049Accident · Minor injuriesClosedPiper PA-11 · Frankfort, SDNTSB LAX65A0092Accident · 1 fatalClosedVought F4U-4 · Lancaster, CANTSB OAK65A0068Accident · Serious injuriesClosedHiller UH12B · Porterville, CANTSB FTW66D0082Accident · Minor injuriesClosedCallair A-9 · Bayou Metro, ARNTSB SEA65F0055Accident · Minor injuriesClosedBoeing E-75 · Elgin, ORNTSB FTW66F0080Accident · Serious injuriesClosedPiper PA18A · Pearsall, TXNTSB FTW66D0028Accident · Minor injuriesClosedBoeing E-75 · China, TXNTSB MIA65F0106Accident · Serious injuriesClosedPiper J3C · Louisburg, NCNTSB FTW66D0076Accident · Minor injuriesClosedPiper PA-18A · Dewitt, ARNTSB MIA65F0119Accident · Minor injuriesClosedPiper PA-28 · W Hollywood, FLNTSB MIA65A0114Accident · 1 fatalClosedCessna 175 · Houma, LANTSB FTW65A0117Accident · 1 fatalClosedPiper PA-18A · Gillett, ARNTSB DEN65A0074Accident · No injuriesClosedBoeing A-75 · 2os Kenna, NMNTSB MIA65A0113Accident · 1 fatalClosedStinson 108 · Mt Ulla, NCNTSB DEN66F0003Accident · Serious injuriesClosedPitts Specl · Longmont, CONTSB SEA66F0081Accident · Serious injuriesClosedPiper PA18A · Dutton, MTNTSB FTW66F0040Accident · Serious injuriesClosedChampion 7 GCB · Sinton, TXNTSB OAK66F0080Accident · No injuriesClosedSnow S2C · Nelson, CANTSB SEA66D0008Accident · No injuriesClosedCallair A-9 · Palouse, WANTSB SEA65D0060Accident · No injuriesClosedFairchild W62M · Adrian, ORNTSB SEA65A0062Accident · 1 fatalClosedPiper PA-18A · Great Falls, MTNTSB FTW66F0038Accident · No injuriesClosedBoeing A-75 · Mcallen, TXNTSB FTW65A0113Accident · 1 fatalClosedPiper PA-25 · Harlingen, TXNTSB CHI65A0096Accident · No injuriesClosedBell 47G3B · Bridgman, MINTSB NYC65A0138Accident · 2 fatalClosedWaco UPF-7 · Ocean City, MDNTSB OAK65F0069Accident · No injuriesClosedNo.American B25 · Honolulu, HINTSB NYC65F0209Accident · No injuriesClosedPiper J3C · W Winfield, NYNTSB FTW66D0024Accident · No injuriesClosedGrumman G-164 · Esterwood, LA