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 SEA80FYM41Accident · No injuriesClosedHiller Acft UH-12E · Gales Creek, ORNTSB CHI80FEE30Accident · No injuriesClosedSchweizer 1-35 · Hinckley, ILNTSB SEA80FA034Accident · 2 fatalClosedCessna 150K · Olympia, WANTSB DEN80DTM24Accident · No injuriesClosedCessna 188 · Vernal, UTNTSB LAX80DUQ15Accident · No injuriesClosedBell 47G-2 · Rosamond, CANTSB NYC80FA046Accident · 1 fatalClosedLuscombe 8A · Fairview, PANTSB MIA80DLD73Accident · No injuriesClosedBoeing A75 · Williston, FLNTSB CHI80FER49Accident · 1 fatalClosedPiper PA-25 · Grove City, MNNTSB ATL80DKQ08Accident · Minor injuriesClosedCessna A188B · Philipp, MSNTSB LAX80FVD28Accident · 2 fatalClosedStarduster TOO · Sonoma, CANTSB ATL80IA056Incident · No injuriesClosedDehavilland DHC-13 · Fredricksburg, VANTSB NYC80FFJ08Accident · Minor injuriesClosedJackson Skyblt · Lakeville, NYNTSB DEN80FTA13Accident · 1 fatalClosedGrumman G-164A · Sand Springs, MTNTSB ATL80FA053Accident · 2 fatalClosedGrumman AA-1C · Delisle, MSNTSB FTW80DRG46Accident · Minor injuriesClosedAero Comdr S2R · Beeville, TXNTSB DEN80FTG16Accident · No injuriesClosedCessna T188 · Starkweather, NDNTSB DEN80FA038Accident · No injuriesClosedAlouette SA315B · Jackson, WYNTSB CHI80DEP36Accident · No injuriesClosedBell 47G-3B · Plainfield, WINTSB LAX80DUJ86Accident · No injuriesClosedGrumman G-164A · Cotton Center, AZNTSB LAX80DUJ67Accident · No injuriesClosedAero Comdr 600S2C · Wilcox, AZNTSB ANC80DAD07Incident · No injuriesClosedCessna 170B · Italio River, AKNTSB MIA80FA067Accident · 2 fatalClosedBellanca 8KCAB · Marathon, FLNTSB LAX80FVD27Accident · Serious injuriesClosedCessna 195B · Lodi, CANTSB FTW80DPG34Accident · No injuriesClosedGrumman G-164A · Conway, ARNTSB FTW80FRD39Accident · Serious injuriesClosedBellanca 7ECA · Vinton, LANTSB FTW80FQG24Accident · No injuriesClosedPiper PA-25 · Portales, NMNTSB SEA80FYA14Accident · No injuriesClosedPiper PA-25 · Burley, IDNTSB LAX80FA105Accident · 2 fatalClosedPiper PA-18 · Newport Beach, CANTSB CHI80FEI24Accident · Minor injuriesClosedBell 47G · Middlebranch, OHNTSB SEA80DYE34Accident · No injuriesClosedPiper PA-25 · Sequim, WANTSB NYC80FA044Accident · 1 fatalClosedPiper PA-23 · Neptune, NJNTSB ATL80FKQ06Accident · Minor injuriesClosedAir Tractor AT301 · Flora, MSNTSB FTW80DPJ22Accident · No injuriesClosedGrumman G-164 · Fairview, OKNTSB DEN80FTG12Accident · 1 fatalClosedPiper PA-25 · Englevale, NDNTSB CHI80FER44Accident · Minor injuriesClosedHughes 269C · Dexter, MNNTSB DEN80DTK12Accident · No injuriesClosedCessna A188B · Pierre, SDNTSB ATL80FKJ09Accident · No injuriesClosedCessna T188 · St Elmo, ALNTSB LAX80DVA44Accident · No injuriesClosedBell 206B · Firebaugh, CANTSB ATL80DKQ05Accident · No injuriesClosedCessna 188T · Hollandale, MSNTSB NYC80FGM21Accident · No injuriesClosedHughes 269C · Scottdale, PANTSB MKC80FCD16Accident · Minor injuriesClosedPiper J3C-65 · Danville, IANTSB LAX80FUJ73Accident · Minor injuriesClosedCessna A188 · Parker, AZNTSB ANC80FA048Accident · 2 fatalClosedPiper PA-18 · Ninilchik, AKNTSB FTW80DPG28Accident · No injuriesClosedAero-Comdr S2R · Weiner, ARNTSB DEN80FTG11Accident · Minor injuriesClosedCessna 188 · Fairmount, NDNTSB CHI80DEG15Accident · No injuriesClosedTomcat MK5A · Sinking Sp, OHNTSB FTW80DQD08Accident · No injuriesClosedAero-Comdr S24 · Mesilla, NMNTSB DEN80FTE45Accident · Serious injuriesClosedGrumman G-164A · Delta, CONTSB MKC80DCG23Accident · No injuriesClosedPiper PA-28 · Perry, KSNTSB ATL80FLJ13Accident · No injuriesClosedBoeing A75N1 · Wenoma, NC