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 DEN74FTM19Accident · Minor injuriesClosedPiper PA-25 · Milford, UTNTSB MKC74FCG37Accident · 1 fatalClosedAero Comdr A-9B · Baldwin, KSNTSB FTW74FQG58Accident · No injuriesClosedPiper PA-25 · San Angelo, TXNTSB DEN74FTE77Accident · Serious injuriesClosedBellanca 7GCBC · Greeley, CONTSB OAK74FVG59Accident · Serious injuriesClosedPiper PA-18 · Marysville, CANTSB OAK74DVD36Accident · No injuriesClosedPiper PA-25 · Healdsburg, CANTSB MKC74DCA26Accident · No injuriesClosedPiper PA-25 · Catron, MONTSB OAK74FVG58Accident · Serious injuriesClosedPiper J3L · Arbuckle, CANTSB FTW74FPG62Accident · Minor injuriesClosedAeronca 7AC · Lake City, ARNTSB MIA74DLD87Accident · No injuriesClosedGrumman G-164A · Leesburg, FLNTSB FTW74DRJ34Accident · No injuriesClosedGrumman G-164A · Bonita, LANTSB CHI74AC092Accident · 3 fatalClosedPiper PA-22 · Oshkosh, WINTSB FTW74FRD39Accident · No injuriesClosedGrumman G-164A · Jennings, LANTSB MKC74DER48Accident · Minor injuriesClosedCessna 175 · Tintah, MNNTSB OAK74FXQ38Accident · No injuriesClosedGrumman G-164 · Fallon, NVNTSB CHI74AC088Accident · 2 fatalClosedGlobe GC-1B · Huntington, INNTSB MIA74DKT79Accident · Serious injuriesClosedBoeing E75N1 · Coral Gables, FLNTSB NYC74FFA31Accident · No injuriesClosedPiper PA-25 · Peru, NYNTSB SEA74DYA31Accident · No injuriesClosedPiper PA-25 · Kuna, IDNTSB SEA74AS043Accident · 1 fatalClosedMooney M20F · Idaho Falls, IDNTSB MIA74DLE04Accident · 1 fatalClosedPitts Spcial · Lutz, FLNTSB IAD74FIA14Accident · No injuriesClosedBell 47D1 · Stephens City, VANTSB DEN74FTE71Accident · No injuriesClosedCessna 177 · Bayfield, CONTSB OAK74AP057Accident · 2 fatalClosedPiper PA-28 · Lk.Brryessa, CANTSB OAK74FVG55Accident · Serious injuriesClosedBoeing A75N1 · E.Nicolaus, CANTSB OAK74FVG50Accident · Serious injuriesClosedCessna 150 · Henleyville, CANTSB SEA74FTA25Accident · No injuriesClosedPiper PA-18 · Richey, MTNTSB SEA74DTI22Accident · No injuriesClosedPiper PA-25 · Power, MTNTSB NYC74DFA30Accident · Serious injuriesClosedPiper PA-23 · North Elba, NYNTSB MKC74DCJ38Accident · No injuriesClosedPiper PA-25 · Hemingford, NENTSB FTW74DRA41Accident · Minor injuriesClosedBoeing A75 · El Campo, TXNTSB SEA74FYA30Accident · 2 fatalClosedDehavilland DHC-1B · Roberts, IDNTSB SEA74DYG34Accident · No injuriesClosedPiper PA-25 · Othello, WANTSB NYC74FGT19Accident · No injuriesClosedPiper PA-32 · Lock Haven, PANTSB SEA74DYG32Accident · No injuriesClosedPiper PA-25 · Genesee, IDNTSB NYC74FNE21Accident · Serious injuriesClosedCessna 150L · Ashford, CTNTSB MIA74DKJ52Accident · No injuriesClosedMurrayair MA-1 · Uniontown, ALNTSB LAX74DVA59Accident · No injuriesClosedCallair A-9 · Earlimart, CANTSB FTW74DRJ32Accident · No injuriesClosedPiper PA-25 · Winnfield, LANTSB OAK74FJA20Accident · No injuriesClosedHughes 269B · Lahaina, HINTSB MKC74FCG32Accident · No injuriesClosedBrantly B-2 · Tarkio, MONTSB FTW74DPG58Accident · No injuriesClosedPiper PA-25 · Altheimer, ARNTSB SEA74FYC47Accident · 1 fatalClosedPiper PA-25 · Corvallis, ORNTSB OAK74FJA19Accident · 1 fatalClosedHughes 269A · Kekaha, HINTSB MIA74DLD84Accident · No injuriesClosedHiller Acft UH-12D · Pleasant Grov, FLNTSB DEN74AD053Accident · 2 fatalClosedCessna A150L · Rio Rancho, NMNTSB SEA74FYG31Accident · Minor injuriesClosedPiper PA-25 · Endicott, WANTSB FTW74FRA35Accident · 1 fatalClosedBoeing E75 · Beaumont, TXNTSB MIA74FKA09Accident · Serious injuriesClosedBell 47G2A1 · San Sabastian, PRNTSB FTW74DRG73Accident · Serious injuriesClosedCallair A-9 · Lyford, TX