Wg mnie w ten sposób tego nie osiągniesz. Potrzebujesz wyciągnąć max(data_ratingu), ale grupowane tylko po customer_id. I wtedy dopiero połączyć, gdzie customer_id=customer_id i data_ratingu = (ten obliczony max).
Jeśli będziesz miał problem to napisać mogę pomóc.
edit:
Przykladowy sposób rozwiązania (mam nadzieję, że nie ma błędu w składni bo nie miałem gdzie przetestować):
with dane as (
SELECT c.customer_id, rt.rating, rt.data_ratingu
FROM cutomer AS c
INNER JOIN rating_table AS rt ON c.customer_id = rt.customer_id
)
, maksy as (
select customer_id, max(data_ratingu) max_data
from dane
group by customer_id
)
select d.customer_id, d.rating, d.data_ratingu
from dane d
join maksy m on (m.customer_id = d.customer_id and d.data_ratingu = m.max_data)