NTSB investigations
20,992 cases where the phase of flight was Approach.
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 = 500)
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 = 500)
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 OAK74FXQ09Accident · No injuriesClosedPiper PA-28 · Reno, NVNTSB SEA74DYG11Accident · No injuriesClosedBellanca 14-193 · Orofino, IDNTSB LAX74DUJ12Accident · No injuriesClosedLet-Np-K L-13 · Tucson, AZNTSB CHI74DEI13Accident · Serious injuriesClosedSchweizer 2-22 · Medina, OHNTSB CHI74AC016Accident · Serious injuriesClosedAero Comdr 520 · Michigan City, INNTSB FTW74DRJ07Accident · No injuriesClosedCessna 150H · Ruston, LANTSB ANC74DAG25Accident · No injuriesClosedPiper PA-12 · Kenai, AKNTSB FTW74FRA11Accident · Serious injuriesClosedConvair BT-13A · Galveston, TXNTSB LAX74FUD02Accident · Minor injuriesClosedCessna 150L · Los Angeles, CANTSB SEA74FYC06Accident · Serious injuriesClosedCessna 150L · Granite, ORNTSB MKC74DCD21Accident · No injuriesClosedMooney M20C · Marion, IANTSB IAD74FLT05Accident · No injuriesClosedPiper PA-23 · Memphis, TNNTSB FTW74DPG14Accident · Minor injuriesClosedPiper PA-18 · Barton, ARNTSB UNK73X0121Accident · 1 fatalClosedTaylor Titch · Salem, ILNTSB NYC74DHD11Accident · Minor injuriesClosedAmer Avco AA1-B · Bristol, PANTSB NYC74AN017Accident · 2 fatalClosedPiper PA-12 · Haverhill, MANTSB MKC74DER43Accident · Minor injuriesClosedPiper PA-18 · Intl Falls, MNNTSB MIA74FKT11Accident · No injuriesClosedBeech C-45H · Indiantown, FLNTSB LAX74AL017Accident · 3 fatalClosedMooney M20-F · Shoshone, CANTSB NYC74DNC17Accident · No injuriesClosedCessna 150G · Wiscasset, MENTSB NYC74AN015Accident · Serious injuriesClosedBeech S35 · State College, PANTSB MIA74IM020Incident · No injuriesClosedLockheed 1011 · Miami, FLNTSB CHI74AC014Accident · No injuriesClosedPiper PA-28 · Batavia, OHNTSB NYC74DGT06Accident · No injuriesClosedPiper PA-28 · Annville, PANTSB LAX74FUQ12Accident · Serious injuriesClosedBellanca 17-30A · Ridgecrest, CANTSB CHI74FEC07Accident · No injuriesClosedPiper PA-22 · Petersburg, MINTSB MKC74FCQ07Accident · Serious injuriesClosedBeech B19 · Wichita, KSNTSB FTW74FPM05Accident · No injuriesClosedPiper PA-22 · Tulsa, OKNTSB ANC74DAG16Accident · Minor injuriesClosedPiper PA-28R · Naknek, AKNTSB NYC74FNC14Accident · Serious injuriesClosedTaylorcraft BC12-D · Greenville, MENTSB LAX74AL013Accident · 5 fatalClosedCessna 150L · Torrance, CANTSB CHI74FEP11Accident · Minor injuriesClosedCessna 170B · Kenosha, WINTSB CHI74FEE12Accident · No injuriesClosedPiper PA-28 · Elburn, ILNTSB CHI74FEE09Accident · No injuriesClosedStinson L-5 · Rockford, ILNTSB MIA74DKG17Accident · No injuriesClosedCessna 188 · Cochran, GANTSB LAX74FUQ09Accident · No injuriesClosedCessna 170B · Lancaster, CANTSB OAK74FVM06Accident · Minor injuriesClosedCessna 150 · San Jose, CANTSB CHI74FEP10Accident · Serious injuriesClosedCessna 172 · Cadott, WINTSB MIA74DKA03Accident · No injuriesClosedCessna 150 · Humacao, PRNTSB LAX74FVA16Accident · Serious injuriesClosedPiper PA-28 · Bakersfield, CANTSB SEA74FYG08Accident · Serious injuriesClosedBell 47J-2A · Inchelium, WANTSB FTW74FRA10Accident · No injuriesClosedPiper PA-22 · Friendswood, TXNTSB NYC74FHJ09Accident · Minor injuriesClosedPiper PA-28 · Mt Pleasant, NYNTSB CHI74DEM15Accident · No injuriesClosedPiper PA-17 · Charlotte, MINTSB ANC74AA018Accident · Serious injuriesClosedBell 206A · Wasilla, AKNTSB DEN74AD006Accident · 1 fatalClosedPiper PA-24 · Weed, NMNTSB CHI74FEI23Accident · Minor injuriesClosedCessna 172 · S Parkman, OHNTSB NYC74FNA06Accident · Serious injuriesClosedPiper PA-28 · N.Andover, MANTSB MIA74DKJ09Accident · No injuriesClosedCessna 150C · Arley, ALNTSB CHI74FEP04Accident · Serious injuriesClosedStits SA3B · Oshkosh, WI