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 SEA77FA026Accident · 2 fatalClosedCessna 180 · Newdale, IDNTSB CHI77FEM21Accident · 1 fatalClosedCessna 150J · Albion, MINTSB DEN77FTE31Accident · Serious injuriesClosedBell 47G3B2 · Greeley, CONTSB OAK77DVM12Accident · Serious injuriesClosedBell 47G2 · King City, CANTSB LAX77FVJ43Accident · 1 fatalClosedStits SA-3A · Bisbee, AZNTSB IAD77FKM13Accident · 1 fatalClosedCessna 150 · Eden, NCNTSB MIA77FLD41Accident · No injuriesClosedBell 206B · Clearwater, FLNTSB MKC77DCA14Accident · No injuriesClosedBell 47D-1 · Dexter, MONTSB IAD77FLJ10Accident · Serious injuriesClosedTaylorcraft BC12D · Nakina, NCNTSB FTW77DRG33Accident · No injuriesClosedPiper PA-25 · Pharr, TXNTSB DEN77DQG03Accident · No injuriesClosedPiper PA-25 · Rogers, NMNTSB FTW77FRD09Accident · Serious injuriesClosedBell 47G-4A · Ville Platte, LANTSB FTW77DPJ12Accident · Serious injuriesClosedPiper PA-25 · Gotebo, OKNTSB IAD77FA031Accident · 1 fatalClosedPiper PA-28 · Morgantown, WVNTSB CHI77FET11Accident · Minor injuriesClosedBell 47G2 · Kentland, INNTSB CHI77FEG13Accident · 1 fatalClosedChampion 7GCAA · Jamestown, OHNTSB OAK77FVD24Accident · Minor injuriesClosedCallair A-9 · Lodi, CANTSB FTW77DPJ11Accident · No injuriesClosedGrumman G-164B · Carnegie, OKNTSB OAK77FVM10Accident · No injuriesClosedBoeing A-75 · Paicines, CANTSB ANC77DAG44Accident · No injuriesClosedCessna 180 · Kenai, AKNTSB MIA77DKT36Accident · No injuriesClosedCessna 172 · Andytown, FLNTSB ANC77DAG37Accident · No injuriesClosedCessna 182 · Kenai, AKNTSB MIA77FKT28Accident · 1 fatalClosedPitts S2A · Ft.Lauderdale, FLNTSB LAX77FUM22Accident · 1 fatalClosedAero Comdr 600S2R · Brawley, CANTSB MIA77DKT27Accident · No injuriesClosedHughes 269C · Ft.Lauderdale, FLNTSB FTW77FPD13Accident · No injuriesClosedCessna 180 · Santa Anna, TXNTSB FTW77DPD15Accident · No injuriesClosedCessna 188B · Knox City, TXNTSB OAK77FVA21Accident · Minor injuriesClosedCessna 150 · San Joaquin, CANTSB FTW77DPD14Accident · No injuriesClosedPiper PA-25 · Knox City, TXNTSB NYC77FHJ11Accident · Minor injuriesClosedBellanca 7ECA · Riverhead, NYNTSB DEN77FA030Accident · 1 fatalClosedCessna 172M · Englewood, CONTSB MKC77FA016Accident · 2 fatalClosedBellanca 8KCAB · Valparaiso, NENTSB DEN77FTE24Accident · Minor injuriesClosedBellanca 7KCAB · Mack, CONTSB CHI77FEI13Accident · Minor injuriesClosedHughes 269-C · Cleveland, OHNTSB OAK77FA019Accident · 1 fatalClosedBoeing B75N1 · Jean, NVNTSB CHI77FA029Accident · 2 fatalClosedAeronca 7AC · St Paris, OHNTSB MKC77DCQ18Accident · Minor injuriesClosedHughes 269A · Caldwell, KSNTSB NYC77DHA16Accident · No injuriesClosedBell 47G-4 · Blairstown, NJNTSB SEA77DYM19Accident · No injuriesClosedCessna 188 · Hood River, ORNTSB FTW77FA036Accident · 2 fatalClosedCessna 150H · Mer Rouge, LANTSB IAD77FA021Accident · 1 fatalClosedCessna 182 · Lively, VANTSB MIA77FA029Accident · 2 fatalClosedBeech B19 · Pensacola Bch, FLNTSB FTW77FQG10Accident · No injuriesClosedSkybolt 260 · Muleshoe, TXNTSB SEA77FYK04Accident · Serious injuriesClosedErco 415C · Lakeview, WANTSB LAX77FA027Accident · 2 fatalClosedStinson JR.S. · Aztec, AZNTSB FTW77DQG09Accident · No injuriesClosedGrumman G-164B · Springlake, TXNTSB LAX77FUJ27Accident · 1 fatalClosedBoeing A75N1 · Parker, AZNTSB SEA77FYA09Accident · Serious injuriesClosedBell 214B1 · Salmon, IDNTSB SEA77DTI07Accident · No injuriesClosedBell 47G3B1 · Ennis, MTNTSB MKC77FCA10Accident · No injuriesClosedCessna 150M · Marthasville, MO