Final NTSB investigations, ND
154 cases where the phase of flight was Enroute.
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.\"eventStateOrRegion\" = 'ND' AND c.\"eventCountry\" = 'USA'
AND c.\"completionStatus\" = 'Completed'
AND c.\"mKey\" IN (SELECT case_mkey FROM case_phases WHERE main = 400)
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."eventStateOrRegion" = 'ND' AND c."eventCountry" = 'USA'
AND c."completionStatus" = 'Completed'
AND c."mKey" IN (SELECT case_mkey FROM case_phases WHERE main = 400)
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 MKC78FTG01Accident · Minor injuriesClosedCessna 172F · Fargo, NDNTSB MKC77FTG07Accident · Serious injuriesClosedMooney M20F · Lawton, NDNTSB MKC77FTG02Accident · No injuriesClosedCessna 172F · Driscoll, NDNTSB MKC76DTG21Accident · Serious injuriesClosedPiper PA-25 · Mcleod, NDNTSB MKC76AK039Accident · 1 fatalClosedMooney M20F · Lakota, NDNTSB MKC76FK035Accident · 2 fatalClosedAeronca 11CC · Elgin, NDNTSB MKC7KAK062Accident · 1 fatalClosedCessna 150L · Minot, NDNTSB MKC75FTG21Accident · No injuriesClosedCessna 336 · Hannaford, NDNTSB MKC75FTG19Accident · No injuriesClosedCessna 150 · Reynolds, NDNTSB MKC75DTG03Accident · No injuriesClosedPiper PA-11 · Maddock, NDNTSB MKC74FTG16Accident · Minor injuriesClosedPiper PA-12 · Oakes, NDNTSB MKC74FTG15Accident · 1 fatalClosedPiper PA-18 · Ryder, NDNTSB MKC74AK041Accident · 1 fatalClosedPiper PA-28 · Christine, NDNTSB MKC74FTG06Accident · Minor injuriesClosedAmer Avco AA-1B · Fargo, NDNTSB MKC73DTG21Accident · No injuriesClosedCessna 188 · Streeter, NDNTSB MKC73FTG18Accident · No injuriesClosedCessna 172 · Grand Forks, NDNTSB MKC73FTG11Accident · Serious injuriesClosedCessna 140 · Hillsboro, NDNTSB MKC73FTG09Accident · No injuriesClosedPiper PA-23 · Grand Forks, NDNTSB MKC73FTG03Accident · No injuriesClosedCessna 170A · Mott, NDNTSB MKC73AK001Accident · 2 fatalClosedAmer Avco AA-1A · Oakes, NDNTSB MKC72AK047Accident · Serious injuriesClosedBeech D18S · Bismarck, NDNTSB MKC72FTG12Accident · No injuriesClosedCessna 172 · Rolette, NDNTSB MKC72FTG11Accident · No injuriesClosedAero Comr 200D · Carpio, NDNTSB MKC72FTG02Accident · No injuriesClosedSikorsky S-52-3 · New Rockfrd, NDNTSB MKC71AK045Accident · 2 fatalClosedPiper J3-C · Mcleod, NDNTSB MKC71FDD02Accident · Minor injuriesClosedPiper PA-24 · Warsaw, NDNTSB MKC70FDD21Accident · 1 fatalClosedPiper PA-18 · Maddock, NDNTSB MKC70FDD19Accident · Minor injuriesClosedCessna 180 · Pembina, NDNTSB MKC70FDD17Accident · Serious injuriesClosedCessna 172I · Steele, NDNTSB MKC70FDD09Accident · No injuriesClosedPiper PA-28 · Kulm, NDNTSB MKC70D0258Accident · No injuriesClosedPiper PA-18A · Towner, NDNTSB MKC70D0282Accident · No injuriesClosedCessna 172 · Columbus, NDNTSB MKC70F0176Accident · No injuriesClosedPiper PA-28R · Grand Forks, NDNTSB MKC70F0177Accident · No injuriesClosedCessna 177 · Bowdon, NDNTSB MKC69D0424Accident · No injuriesClosedLuscombe 8A · Wahpeton, NDNTSB MKC69D0311Accident · No injuriesClosedPiper PA-18A · Hankinson, NDNTSB MKC69D0341Accident · No injuriesClosedPiper PA-18A · Fingal, NDNTSB MKC69D0296Accident · Minor injuriesClosedPiper PA-22 · Devils Lake, NDNTSB MKC69D0144Accident · No injuriesClosedAlon A-2 · Steele, NDNTSB MKC69F0036Accident · Serious injuriesClosedCessna 210-5 · Cleveland, NDNTSB MKC68D0539Accident · No injuriesClosedPiper PA-28 · Langdon, NDNTSB MKC68F0465Accident · No injuriesClosedPiper PA-28 · Windsor, NDNTSB MKC67A0079Accident · 1 fatalClosedCessna 337A · Medora, NDNTSB MKC67F0615Accident · Minor injuriesClosedCessna 180 · Westfield, NDNTSB MKC67F0365Accident · Serious injuriesClosedChampion 7AC · Jamestown, NDNTSB MKC67D0058Accident · No injuriesClosedPiper PA-24 · Stanton, NDNTSB MKC66A0051Accident · No injuriesClosedBrantly B-2 · Bismark, NDNTSB MKC66D0466Accident · Minor injuriesClosedPiper PA-12 · Oakes, NDNTSB MKC66F0471Accident · No injuriesClosedPiper PA-18 · Upham, NDNTSB UNK65X1525Accident · No injuriesClosedCessna 170A · Mandan, ND