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 NYC73FHD14Accident · Minor injuriesClosedCessna 172 · Norristown, PANTSB MKC73DCD18Accident · No injuriesClosedPiper PA-25 · Pocahontas, IANTSB CHI73FEC08Accident · No injuriesClosedBell 47G-5A · Blissfield, MINTSB ANC73FAD01Accident · No injuriesClosedHiller 12E · Annette, AKNTSB OAK73DVG13Accident · Minor injuriesClosedCessna 150 · Live Oak, CANTSB FTW73DPG16Accident · No injuriesClosedBoeing 75 · St Charles, ARNTSB SEA73FYC07Accident · 1 fatalClosedCallair A-9 · Pendleton, ORNTSB CHI73AC027Accident · 1 fatalClosedCessna 150H · Grovertown, INNTSB NYC73AN033Accident · 2 fatalClosedCessna 177 · Almond, NYNTSB DEN73AD009Accident · 1 fatalClosedPiper PA-28 · Buffalo Crk, CONTSB MIA73DKG30Accident · No injuriesClosedPiper J-3C · Quitman, GANTSB OAK73FXQ10Accident · Minor injuriesClosedGrumman G-164A · Fallon, NVNTSB MIA73FKQ05Accident · No injuriesClosedCessna 188 · Webb, MSNTSB LAX73FVM08Accident · No injuriesClosedLuscombe 8F · Paso Robles, CANTSB MIA73FLD08Accident · Serious injuriesClosedAero Comdr A-9B · Minneola, FLNTSB CHI73DEE20Accident · Minor injuriesClosedPiper PA-28 · Park Forest, ILNTSB SEA73FYC06Accident · Serious injuriesClosedWaco UPF-7 · Vancouver, WANTSB MKC73DER13Accident · No injuriesClosedPiper PA-25 · Mapleton, MNNTSB FTW73DQG14Accident · No injuriesClosedPiper PA-25 · Shallowater, TXNTSB MIA73FKQ06Accident · No injuriesClosedBoeing B75N1 · Minter City, MSNTSB MKC73FER12Accident · No injuriesClosedGrumman G-164A · Hollandale, MNNTSB MIA73FLG14Accident · No injuriesClosedHughes 269B · Rembert, SCNTSB DEN73FTM04Accident · Minor injuriesClosedCessna 190 · Grouse Creek, UTNTSB LAX73FUQ05Accident · No injuriesClosedBell 47G-5 · Oxnard, CANTSB FTW73FRJ08Accident · No injuriesClosedPiper PA-25 · Holly Ridge, LANTSB CHI73FLQ06Accident · 1 fatalClosedPiper PA-18 · Hanson, KYNTSB SEA73FYA06Accident · Serious injuriesClosedPiper PA-25 · Menan, IDNTSB NYC73DNC18Accident · Minor injuriesClosedPiper PA-22 · Tenants Harbor, MENTSB CHI73FEV07Accident · Serious injuriesClosedPiper PA-25 · Brookport, ILNTSB SEA73DYG10Accident · No injuriesClosedSnow S-2R · Wiley City, WANTSB NYC73AN025Accident · 1 fatalClosedChampion 7GCAA · Sherrills Ford, NCNTSB MIA73DKJ13Accident · Minor injuriesClosedPiper PA-25 · Elkmont, ALNTSB NYC73FFA09Incident · No injuriesClosedPiper J-3 · Saratoga, NYNTSB FTW73FRJ09Accident · 1 fatalClosedPiper PA-18 · Mangham, LANTSB OAK73FVM06Accident · No injuriesClosedBoeing E75 · Salinas, CANTSB MIA73DLA12Accident · No injuriesClosedBoeing E75 · Green Cove Sp, FLNTSB FTW73DRG08Accident · No injuriesClosedSnow 600S2C · Sebastian, TXNTSB MIA73FKQ02Accident · No injuriesClosedGrumman G-164 · Philipp, MSNTSB CHI73AC013Accident · 1 fatalClosedChampion 7ECA · Mccordsville, INNTSB ANC73DAG14Accident · Minor injuriesClosedCessna 172K · Delta Junct, AKNTSB SEA73DYA05Accident · Serious injuriesClosedBell 47G · Murtaugh, IDNTSB MIA73DLT02Accident · No injuriesClosedCessna A188A · Olive Branch, MSNTSB LAX73FUJ14Accident · No injuriesClosedBoeing A75N1 · Florence, AZNTSB OAK73FVG08Accident · Minor injuriesClosedAero Comdr A-9B · Colusa, CANTSB NYC73FID05Accident · 2 fatalClosedBell 47G-2A · Floyd, VANTSB MKC73FCG02Accident · Minor injuriesClosedBell 47J · Osage Beach, MONTSB MIA73FKG21Accident · 1 fatalClosedCessna A188A · Sylvester, GANTSB DEN73FTC04Accident · No injuriesClosedHughes 269B · Buffalo, WYNTSB MIA73FLG10Accident · Minor injuriesClosedCessna 188 · Kline, SCNTSB SEA73FYG08Accident · Serious injuriesClosedStinson 108-2 · Asotin, WA