NTSB investigations
18,850 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 MKC66A0031Accident · 2 fatalClosedCessna 150 · Mitchell, SDNTSB FTW66D0392Accident · No injuriesClosedPiper J-3 · Washita, OKNTSB MKC66F0350Accident · Serious injuriesClosedForney F-1 · Burrton, KSNTSB DEN66F0174Accident · Minor injuriesClosedNaval Arcft N3N-3 · Sun City, AZNTSB MIA66A0051Accident · No injuriesClosedBrantly B-2 · Opa Locka, FLNTSB DEN66D0139Accident · No injuriesClosedCessna 150 · Roswell, NMNTSB ANC66D0068Accident · Minor injuriesClosedPiper PA-18 · Farewell, AKNTSB SEA66A0029Accident · 1 fatalClosedTaylorcraft BC12-D · Blackfoot, IDNTSB LAX66A0039Accident · No injuriesClosedHiller UH12E · Newhall, CANTSB NYC66F0308Accident · No injuriesClosedErcoupe 415C · South Boston, VANTSB MIA49A0049Accident · 2 fatalClosedTaylorcraft BF-12 · Horton, ALNTSB FTW66F0359Accident · Minor injuriesClosedBoeing A-75 · Lorenzo, TXNTSB FTW66A0039Accident · No injuriesClosedBell 47D1 · Snyder, TXNTSB MIA66F0286Accident · No injuriesClosedPiper PA-20 · Charlotte, NCNTSB DEN66F0140Accident · No injuriesClosedNaval Arcft N3N-3 · Litchfield Pk, AZNTSB MIA66F0369Accident · No injuriesClosedCessna 150E · Theodore, ALNTSB CHI66A0042Accident · 2 fatalClosedCessna 140 · Ralph, MINTSB ANC66A0019Accident · 1 fatalClosedCessna 140 · Napakiah, AKNTSB MIA66F0331Accident · Minor injuriesClosedPiper PA-25 · Pahokee, FLNTSB FTW66F0342Accident · No injuriesClosedPiper PA-25 · Terrell, TXNTSB MIA66F0299Accident · No injuriesClosedStinson 108-1 · Plantation, FLNTSB MKC66F0288Accident · No injuriesClosedPiper PA-22 · Boschertown, MONTSB LAX66F0136Accident · Minor injuriesClosedBoeing A-75N1 · El Centro, CANTSB DEN66A0026Accident · No injuriesClosedBell 47G-2 · Queen Creek, AZNTSB MKC66A0024Accident · 1 fatalClosedSr.Aero SPT D-260 · Hamel, MNNTSB MIA66A0039Accident · 1 fatalClosedMong Sport BR SPL · Summerville, SCNTSB FTW66F0352Accident · Minor injuriesClosedPiper J-3 · Randlett, OKNTSB DEN66F0164Accident · Serious injuriesClosedPiper PA18 · Grd Junction, CONTSB CHI66F0332Accident · No injuriesClosedPiper J-3 · New Paris, OHNTSB LAX66F0135Accident · No injuriesClosedFairchild PT-23 · Lathrop Wells, NVNTSB FTW66F0329Accident · No injuriesClosedCessna 150F · Midland, TXNTSB MKC66F0249Accident · Minor injuriesClosedBeechcraft T-34 · Dearborn, MONTSB CHI66F0335Accident · Minor injuriesClosedAeronca 7AC · Poplar Plains, KYNTSB SEA66D0147Accident · Minor injuriesClosedPiper PA-22 · Ione, ORNTSB MKC66A0021Accident · 1 fatalClosedCessna 188 · Wichita, KSNTSB MIA66F0276Accident · Minor injuriesClosedGrumman G-164 · Belle Glade, FLNTSB MIA66F0263Accident · Minor injuriesClosedPiper PA-25 · Perrine, FLNTSB FTW66F0315Accident · No injuriesClosedCessna 182A · Baytown, TXNTSB OAK66F0148Accident · Minor injuriesClosedStinson L-5 · Byron, CANTSB DEN66F0117Accident · Serious injuriesClosedMonocoupe 110SPL · Grd Junction, CONTSB OAK66D0123Accident · No injuriesClosedPiper J-3C · Sunol Resv, CANTSB OAK66A0013Accident · 1 fatalClosedBreeze H1 · Lincoln, CANTSB OAK66F0129Accident · No injuriesClosedPiper PA-25 · Linden, CANTSB LAX66F0125Accident · No injuriesClosedBoeing D-75N1 · Holtville, CANTSB MIA66F0269Accident · No injuriesClosedPiper PA-25 · Pinehurst, GANTSB MIA66F0254Accident · No injuriesClosedBoeing B-75M · Belzoni, MSNTSB MIA66F0253Accident · No injuriesClosedPiper PA-23 · Albemarle, NCNTSB LAX66F0116Accident · No injuriesClosedNaval Arcft N3N · Calipatria, CANTSB MIA66F0214Accident · Serious injuriesClosedAeronca 7AC · Columbus, MSNTSB MIA66F0205Accident · No injuriesClosedPiper PA-18A · Wing, AL