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 ATL80DLA15Accident · Serious injuriesClosedCessna T188C · Moultrie, GANTSB ANC80DAH09Accident · Minor injuriesClosedPiper PA-18 · King Salmon, AKNTSB SEA80FA046Accident · 1 fatalClosedCessna 172N · Pendleton, ORNTSB LAX80FUM30Accident · Serious injuriesClosedAir Tractor AT-301 · Brawley, CANTSB LAX80FUM29Accident · No injuriesClosedPiper PA-36 · Calipatria, CANTSB DEN80FTM39Accident · No injuriesClosedWeatherly 201 · Delta, UTNTSB CHI80DER58Accident · No injuriesClosedPiper PA-25 · Bingham Lake, MNNTSB ATL80DLA14Accident · No injuriesClosedGrumman G-164A · Berlin, GANTSB MKC80DCJ39Accident · No injuriesClosedPiper PA-25 · Weeping Water, NENTSB FTW80FQG39Accident · No injuriesClosedPiper PA-36 · Clovis, NMNTSB FTW80FPM19Accident · Serious injuriesClosedWeatherly 201C · Commerce, OKNTSB ANC80DAH12Accident · Serious injuriesClosedPiper PA-12 · Copper Center, AKNTSB FTW80FRJ37Accident · 2 fatalClosedBell 47G-2A · Cottonport, LANTSB ATL80DLA13Accident · No injuriesClosedHughes 269B · Meigs, GANTSB ATL80DKQ23Accident · No injuriesClosedCessna 188B · Ovett, MSNTSB FTW80DPG62Accident · No injuriesClosedCessna 150H · Monticello, ARNTSB ATL80FA087Accident · 1 fatalClosedCessna A150L · Anderson, SCNTSB ATL80DKM26Accident · No injuriesClosedDehavilland DHC-1B · Huntersville, NCNTSB MIA80FA097Accident · 1 fatalClosedCessna 150 · Zephyrhills, FLNTSB LAX80FA137Accident · 2 fatalClosedDehavilland DH82A · Oak View, CANTSB LAX80DUM28Accident · No injuriesClosedAyres S2R · Holtville, CANTSB MKC80FA052Accident · No injuriesClosedGlobe GC-1B · Benton, KSNTSB MKC80DCD31Accident · Minor injuriesClosedGrumman G-164 · Hampton, IANTSB MIA80FA096Accident · 2 fatalClosedPiper PA-31 · Vero Beach, FLNTSB MIA80FA095Accident · 2 fatalClosedCessna 172 · Wabasso, FLNTSB FTW80FPD44Accident · Serious injuriesClosedBellanca 7GCBC · Lamkin, TXNTSB DEN80FTE74Accident · No injuriesClosedAir Tractor AT-301 · Montevista, CONTSB ATL80FLA11Accident · No injuriesClosedCessna A188 · Hopeful, GANTSB ATL80FA086Accident · 1 fatalClosedChampion 7BCM · Lake City, SCNTSB ATL80DKQ21Accident · No injuriesClosedCessna A188B · Hurley, MSNTSB NYC80FNC43Accident · Serious injuriesClosedBellanca 7ECA · Milbridge, MENTSB FTW80FRJ35Accident · 1 fatalClosedPiper PA-25 · Transylvania, LANTSB DEN80FTA20Accident · No injuriesClosedCessna 182 · Winifred, MTNTSB ATL80DLJ18Accident · No injuriesClosedCessna 188B · Elizabeth City, NCNTSB SEA80DYK14Accident · No injuriesClosedCessna 210 · French Glen, ORNTSB CHI80FEI38Accident · No injuriesClosedBell 47 · Norwalk, OHNTSB FTW80FA107Accident · 2 fatalClosedMooney M20F · Fredricksburg, TXNTSB FTW80DPG60Accident · Minor injuriesClosedCessna 188 · Marvell, ARNTSB LAX80FVA62Accident · No injuriesClosedAyres S2R · Kerman, CANTSB ATL80DLJ21Accident · No injuriesClosedPiper PA-25 · Kenly, NCNTSB ATL80DLA08Accident · No injuriesClosedRockwell S-2R · Colquitt, GANTSB CHI80FA064Accident · 1 fatalClosedSchweizer I-26E · Chardon, OHNTSB ATL80FLJ23Accident · No injuriesClosedPiper PA-25 · Hope Mills, NCNTSB ATL80DLA07Accident · No injuriesClosedGrumman G-164A · Cairo, GANTSB ATL80FLJ22Accident · No injuriesClosedGrumman G-164C · Grantham, NCNTSB ATL80FLG18Accident · 1 fatalClosedHughes 269B · Whiteville, NCNTSB ATL80DLA09Accident · Serious injuriesClosedBell 47G · Blakely, GANTSB SEA80DYK16Accident · No injuriesClosedCessna 188 · Medford, ORNTSB NYC80FA071Accident · 2 fatalClosedPiper PA-24 · Atlantic City, NJNTSB FTW80FQA40Accident · Serious injuriesClosedHiller Acft UH-12E · Burnham, NM