NTSB investigations, PR
47 cases where the phase of flight was Approach.
Cases per year
| 1964 | 3 |
|---|---|
| 1965 | 1 |
| 1966 | 1 |
| 1967 | 6 |
| 1968 | 2 |
| 1970 | 1 |
| 1971 | 3 |
| 1972 | 3 |
| 1973 | 2 |
| 1975 | 2 |
| 1976 | 1 |
| 1978 | 2 |
| 1980 | 5 |
| 2001 | 1 |
| 2002 | 2 |
| 2004 | 2 |
| 2008 | 1 |
| 2010 | 1 |
| 2012 | 2 |
| 2014 | 1 |
| 2015 | 1 |
| 2017 | 1 |
| 2018 | 1 |
| 2024 | 1 |
| 2026 | 1 |
Latest cases
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\" = 'PR' AND c.\"eventCountry\" = 'USA'
AND 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."eventStateOrRegion" = 'PR' AND c."eventCountry" = 'USA'
AND 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 ERA26LA176Accident · No injuriesClass 3 · LimitedFinal reportIcon A5 · Levittown, PRAn oil line separation at a barbed fitting in an experimental airplane, which resulted in a total loss of engine power due to oil starvation.NTSB ERA24FA301Accident · 1 fatalClass 3 · FieldFinal reportCessna 402B · Aguadilla, PRThe pilot’s decision to operate the airplane with known maintenance discrepancies, which resulted in a total loss of right engine power. Contributing to the outcome was the pilot’s failure to maintain airspeed while returning to the airport with a single…NTSB ERA18TA193Accident · Serious injuriesFinal reportQuicksilver MXL II · Arecibo, PRThe noncertificated pilot's improper fuel planning and management, which resulted in a total loss of engine power due to fuel exhaustion.NTSB ERA18LA002Accident · 1 fatalLimited investigationFinal reportCessna 182 · San Juan, PRThe pilot's failure to maintain adequate distance from helicopters during the approach for landing, resulting in an encounter with wake turbulence and subsequent loss of control.NTSB ERA15FA096Accident · 1 fatalField investigationFinal reportRobinson Helicopter R22 Beta · Catano, PRThe student pilot’s failure to maintain rotor rpm while maneuvering in the airport traffic pattern, which resulted in the helicopter’s uncontrolled descent to the water. Contributing to the accident was the student’s distraction with other aircraft operating…NTSB ERA14LA174Accident · 1 fatalLimited investigationFinal reportN/A N/A · Patillas, PRThe pilot’s failure to maintain airplane control during approach for landing, which resulted in a stall/spin.NTSB ERA12FA484Accident · 1 fatalField investigationFinal reportCessna 172M · San Juan, PRMaintenance personnel’s improper lubrication of the right direct aileron control cable and failure to detect the severe corrosion of the cable during a maintenance inspection, which resulted in the in-flight failure of the cable, the pilot’s subsequent…NTSB DCA12FA051Accident · 2 fatalClass 1 · FieldFinal reportConvair 440 - NO Series · San Juan, PRthe flight crew's failure to maintain adequate airspeed after shutting down the right engine due to an in-flight fire in one of the right augmentors. The failure to maintain airspeed resulted in either an aerodynamic stall or a loss of directional control.NTSB ERA10LA222Accident · Serious injuriesLimited investigationFinal reportBeech 95-A55 · Arecibo, PRA loss of engine power in one engine due to fuel starvation as a result of the pilot's improper fuel management, resulting in a forced landing in a field.NTSB NYC08CA300Accident · Serious injuriesData collectionFinal reportQuicksilver MXL II · Barceloneta, PRThe student pilot's failure to maintain control of the airplane during an aborted landing. Contributing to the accident were the high winds.NTSB MIA05LA013Accident · No injuriesLimited investigationFinal reportPiper PA-23-250 · San Juan, PRThe pilot-in-command's failure to maintain airspeed while on base to final leg, which resulted in an inadvertent stall/mush and subsequent impact with the runway.NTSB ATL04LA183Accident · No injuriesLimited investigationFinal reportPiper PA-18 · San Juan, PRThe pilot's failure to apply carburetor heat which resulted in carburetor ice and the subsequent loss of engine power. A factor was weather conditions favorable for carburetor ice.NTSB MIA03LA006Accident · No injuriesLimited investigationFinal reportPiper PA-28-140 · Las Palmas, PRThe pilot's failure to switch fuel tanks resulting in a partial loss of engine power due to fuel starvation during a go-around. Additionally, the pilot's failure to monitor airspeed and proper touchdown point during the emergency landing resulted in another…NTSB MIA02LA119Accident · No injuriesLimited investigationFinal reportCessna 208B · Isla De Vieques, PRthe failure of both pilots to see and avoid, also causal was the failure of the pilot of the Britten-Norman Islander (N663VL) to yield right of way to an aircraft in the traffic pattern.NTSB MIA01IA110Incident · No injuriesIncident investigationFinal reportDouglas DC3A · San Juan, PRThe captain's activation of the left propeller feathering button after failure of the right engine for undetermined reasons resulting in loss of all engine power and the airplane making a forced landing in water.NTSB MIA81FA001Accident · 4 fatalClosedPiper PA-28 · Aguadilla, PRNTSB MIA80FKA10Accident · No injuriesClosedCessna 172 · Guanica, PRNTSB MIA80DKA09Accident · Serious injuriesClosedBensen B8M · Vega Baja, PRNTSB MIA80FKA07Accident · No injuriesClosedPiper PA-28 · Lares, PRNTSB MIA80FKA03Accident · No injuriesClosedCessna 336 · Mona Island, PRNTSB DCA78AA024Accident · 6 fatalClosedBeech D18S · San Juan, PRNTSB MIA78FKA06Accident · No injuriesClosedPiper PA-31 · Culebra Is, PRNTSB MIA76FKA05Accident · Minor injuriesClosedCessna 411 · San Juan, PRNTSB MIA76AM023Accident · Minor injuriesClosedBoeing 747 · San Juan, PRNTSB MIA75FKA07Accident · No injuriesClosedBeech B95 · Arecibo, PRNTSB MIA74DKA03Accident · No injuriesClosedCessna 150 · Humacao, PRNTSB MIA73AM065Accident · 2 fatalClosedCessna 182H · Culebra Island, PRNTSB MIA73FKA07Accident · 1 fatalClosedAmer Avco AA1 · San Juan, PRNTSB MIA73FKA05Accident · Serious injuriesClosedCessna 172C · Culebra, PRNTSB MIA72AM142Accident · 5 fatalClosedDehavilland DH114 · Ponce, PRNTSB MIA72AM057Accident · Serious injuriesClosedBrittnorman BN-2 · Culebra, PRNTSB MIA72DKA08Accident · Minor injuriesClosedPiper PA-28 · Mayaguez, PRNTSB MIA72FKA02Accident · No injuriesClosedAmer Avco AA1 · San Sebastian, PRNTSB MIA71FKA07Accident · Serious injuriesClosedBeech 95-C55 · Mayaguez, PRNTSB MIA69F0311Accident · Minor injuriesClosedPiper PA-28 · Mayaguez, PRNTSB MIA68F0352Accident · Minor injuriesClosedPiper PA-28 · Mayaguez, PRNTSB MIA68F0279Accident · No injuriesClosedPiper PA-32 · Humacao, PRNTSB MIA68F0218Accident · No injuriesClosedPiper PA-22 · Humacao, PRNTSB MIA67A0112Accident · Minor injuriesClosedConvair 640D · San Juan, PRNTSB MIA67D0397Accident · No injuriesClosedCessna 172 · Cabo Rojo, PRNTSB MIA67F0361Accident · No injuriesClosedPiper PA-28 · San Juan, PRNTSB MIA67A0080Accident · Minor injuriesClosedConvair 640 · San Juan, PRNTSB MIA66D0631Accident · No injuriesClosedCessna 150 · Humacao, PRNTSB MIA66F0247Accident · No injuriesClosedChampion 7FC · Cabo Rojo, PRNTSB UNK64X2441Accident · No injuriesClosedPiper PA22 · San German, PRNTSB UNK64X2055Accident · No injuriesClosedPiper PA28 · Lobos Island, PRNTSB UNK64X1474Accident · No injuriesClosedPiper PA28 · Lobos Is, PR