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 MKC77FCG23Accident · No injuriesClosedPitts S1S · Olathe, KSNTSB MKC77FCJ20Accident · No injuriesClosedBell 47G · Elgin, NENTSB CHI77FEM25Accident · No injuriesClosedPiper PA36 · Grant, MINTSB MIA77FKQ13Accident · Serious injuriesClosedPiper J5A · Hattiesburg, MSNTSB FTW77FRJ07Accident · Serious injuriesClosedCessna 188B · Mer Rouge, LANTSB FTW77FFA22Accident · 1 fatalClosedBoeing E75N1 · Beaumont, TXNTSB FTW77FA054Accident · 1 fatalClosedRyan ST-3KR · San Angelo, TXNTSB SEA77FYE19Accident · No injuriesClosedBell 47D1 · Enumclaw, WANTSB FTW77FPG35Accident · Minor injuriesClosedBellanca 8GCBC · Lonoke, ARNTSB MIA77FKQ14Accident · Serious injuriesClosedCessna A188B · Tutwiler, MSNTSB OAK77DVG33Accident · No injuriesClosedGrumman G-164 · Gridley, CANTSB FTW77DPG38Accident · Serious injuriesClosedGrumman G-164A · Carlisle, ARNTSB MKC77DCQ37Accident · No injuriesClosedHiller FH1100 · Oakley, KSNTSB FTW77FPA11Accident · No injuriesClosedCessna A188B · Seagoville, TXNTSB FTW77DRG46Accident · Minor injuriesClosedCessna A188 · Uvalde, TXNTSB MKC77FTK18Accident · No injuriesClosedGrumman G-164A · Martin, SDNTSB FTW77FA052Accident · Minor injuriesClosedBeech 95-55 · Durant, OKNTSB FTW77DPG33Accident · No injuriesClosedGrumman G-164A · Hazen, ARNTSB CHI77FEX23Accident · No injuriesClosedBell MK5A · Russiaville, INNTSB NYC77FFJ19Accident · No injuriesClosedGrumman G-164 · North Rose, NYNTSB MIA77FKG27Accident · Serious injuriesClosedEL Tomcat MK5A · Ray City, GANTSB SEA77DTI13Accident · Minor injuriesClosedPiper PA-18 · Chester, MTNTSB DEN77FTC12Accident · Minor injuriesClosedSudaviation SA315B · Laramie, WYNTSB MKC77FER39Accident · Serious injuriesClosedHiller Acft UH-12E · Big Lake, MNNTSB MKC77FCD16Accident · No injuriesClosedCessna 150 · West Union, IANTSB CHI77FEI21Accident · No injuriesClosedGrum Amer AA-1B · Bowling Green, OHNTSB OAK77DVM16Accident · Minor injuriesClosedPiper PA-25 · King City, CANTSB OAK77DVG32Accident · Serious injuriesClosedAeronca 7AC · Colusa, CANTSB MIA77FLG15Accident · 2 fatalClosedStarduster 2 · Camden, SCNTSB FTW77DRD17Accident · Minor injuriesClosedPiper PA-25 · Crowley, LANTSB FTW77DRD16Accident · No injuriesClosedGrumman G-164A · Eunice, LANTSB CHI77FEX20Accident · Serious injuriesClosedPiper PA-25 · Ramsey, INNTSB MKC77FA022Accident · 1 fatalClosedPiper PA-36 · Pierre, SDNTSB NYC77FA053Accident · 1 fatalClosedBell 47G-4A · Hartsdale, NYNTSB SEA77DYM30Accident · No injuriesClosedCallair A9 · Pilot Rock, ORNTSB OAK77DVG27Accident · No injuriesClosedGrumman G-164 · Maxwell, CANTSB LAX77FUJ44Accident · No injuriesClosedGrumman G-164A · Queen Creek, AZNTSB NYC77FFJ17Accident · No injuriesClosedPiper PA-28 · Binghamton, NYNTSB LAX77FUM26Accident · No injuriesClosedPiper PA-36 · Brawley, CANTSB MKC77DCQ32Accident · No injuriesClosedCessna 188 · Cawker City, KSNTSB MIA77DLD51Accident · Minor injuriesClosedEL Tomcat MK6A · Lake Wales, FLNTSB FTW77FRD10Accident · Serious injuriesClosedPiper PA-36 · New Roads, LANTSB ANC77DAG77Accident · Minor injuriesClosedPiper PA-18 · Bethel, AKNTSB MIA77FA055Accident · 1 fatalClosedAeronca C3 · Immokalee, FLNTSB CHI77DEV20Accident · No injuriesClosedCessna 150 · Thompsonville, ILNTSB OAK77DVG23Accident · No injuriesClosedGrumman G-164A · Dunnigan, CANTSB CHI77FEV22Accident · Minor injuriesClosedBell 47G5 · Enfield, ILNTSB MKC77FER33Accident · Serious injuriesClosedCessna 172 · Terrace, MNNTSB CHI77FEV19Accident · Serious injuriesClosedSnow S2B · Belle Rive, ILNTSB SEA77DYM27Accident · No injuriesClosedCessna 188B · Albany, OR