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 SEA71FYG60Accident · Minor injuriesClosedBell 47G2 · Moses Lake, WANTSB OAK71FVA89Accident · No injuriesClosedBoeing E75N1 · Five Points, CANTSB FTW71FPG66Accident · Minor injuriesClosedGrumman G-164 · Eudora, ARNTSB OAK71DVA91Accident · Minor injuriesClosedPiper J4A · Three Rivrs, CANTSB MKC71FTG33Accident · Serious injuriesClosedPiper PA-18 · Bremen, NDNTSB SEA71DYA40Accident · No injuriesClosedCessna 188 · Kimberly, IDNTSB MIA71FKA12Accident · 1 fatalClosedGrumman G-164 · Ponce, PRNTSB ANC71DAG05Accident · No injuriesClosedPiper PA-18 · Tyonek, AKNTSB SEA71FTA23Accident · No injuriesClosedCallair A-9 · Opheim, MTNTSB SEA71DYA38Accident · No injuriesClosedPiper PA-25 · Blackfoot, IDNTSB CHI71FLQ29Accident · No injuriesClosedBell 47G4A · Utica, KYNTSB MIA71FKQ38Accident · Serious injuriesClosedBoeing A75N1 · Greenwood, MSNTSB MKC71DCQ44Accident · No injuriesClosedCallair A-9 · Ulysses, KSNTSB SEA71DYG59Accident · No injuriesClosedCallair A-6 · Waterville, WANTSB FTW71FRJ38Accident · Serious injuriesClosedCessna 140 · Alexandria, LANTSB SEA71DYA36Accident · Serious injuriesClosedPiper PA-25 · Idaho Falls, IDNTSB MKC71DER74Accident · Minor injuriesClosedBell 47G2 · Franklin, MNNTSB LAX71DUG93Accident · No injuriesClosedHughes 269B · Duarte, CANTSB FTW71FRD53Accident · No injuriesClosedGrumman G-164 · Crowley, LANTSB OAK71DXQ49Accident · Minor injuriesClosedHughes 269B · Taylorsville, CANTSB OAK71DXQ42Accident · Minor injuriesClosedBell 47G3B1 · Bishop, CANTSB IAD71DIJ23Accident · No injuriesClosedChampion 7GCAA · Washington, WVNTSB FTW71FRA65Accident · No injuriesClosedBell 47D1 · Alvin, TXNTSB SEA71FTI38Accident · 1 fatalClosedPiper PA-18 · Turner, MTNTSB CHI71FEP53Accident · 1 fatalClosedPiper PA-18 · Ripon, WINTSB OAK71FVM58Accident · 1 fatalClosedZlin 526F · Hollister, CANTSB OAK71FVG83Accident · No injuriesClosedBoeing A75N1 · Afton, CANTSB NYC71DFA65Accident · No injuriesClosedAeronca 11AC · Richfield Sprg, NYNTSB MKC71DER78Accident · Serious injuriesClosedPiper PA-18 · Ortonville, MNNTSB SEA71FYC42Accident · 1 fatalClosedHiller UH12A · Brooks, ORNTSB CHI71AC087Accident · 2 fatalClosedChampion 7ECA · Poseyville, INNTSB DEN71DTC04Accident · No injuriesClosedPiper PA-18A · Lingle, WYNTSB NYC71FHA51Accident · 1 fatalClosedBell 47G2 · Branchville, NJNTSB MKC71FER71Accident · 1 fatalClosedPiper PA-18 · Barnesville, MNNTSB DEN71FTC03Accident · Serious injuriesClosedPiper PA-25 · Rawlins, WYNTSB MKC71FCJ69Accident · No injuriesClosedCallair A9A · Ashton, NENTSB MIA71DKA14Accident · No injuriesClosedGrumann G164 · Yauco, PRNTSB DEN71FTE08Accident · Minor injuriesClosedNaval Fcty N3N-1 · Greeley, CONTSB SEA71DYA34Accident · Minor injuriesClosedPiper PA-25 · Arock, ORNTSB NYC71FNE37Accident · 1 fatalClosedB.Jungmistr BU-133 · Plainville, CTNTSB MKC71FER69Accident · No injuriesClosedHughes 269A · Montevideo, MNNTSB LAX71FUM41Accident · No injuriesClosedCessna 150J · El Cajon, CANTSB SEA71FYE33Accident · Serious injuriesClosedBell 47G2 · Eatonville, WANTSB SEA71FTI35Accident · No injuriesClosedChampion 7AC · Belgrade, MTNTSB NYC71FNA60Accident · 1 fatalClosedGrumman F8F-2 · No.Kingstown, RINTSB DEN71FTE10Accident · Serious injuriesClosedCallair A-9 · Firestone, CONTSB CHI71DEE92Accident · No injuriesClosedTaylorcraft DL-65 · Stockton, ILNTSB NYC71FHD52Accident · Serious injuriesClosedCessna 150 · Evesham, NJNTSB FTW71FPJ48Accident · Serious injuriesClosedCougar 010A · Moore, OKNTSB OAK71DVA80Accident · Minor injuriesClosedSnow 600S2C · Huron, CA